No se puede ejecutar Stockfish en Python

Aug 28 2020

Sé que este no es un foro de programación, aunque está relacionado con el ajedrez, de ahí la ubicación aquí. Básicamente, estoy tratando de configurar stockfish con Python en mi PC. Lo instalé a través de pip install stockfish.

Así que continué e intenté configurar el Stockfish a través de:

from stockfish import Stockfish

stockfish = Stockfish(r'C:\Users\Acer\Desktop\chess\stockfish-11-win')

Eso arroja un WinError 5, acceso denegado:

Exception ignored in: <function Stockfish.__del__ at 0x0429AA48>
Traceback (most recent call last):
  File "C:\Users\Acer\AppData\Local\Programs\Python\Python38-32\lib\site-packages\stockfish\models.py", line 270, in __del__
    self.stockfish.kill()
AttributeError: 'Stockfish' object has no attribute 'stockfish'
Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    emily = Stockfish(r'C:\Users\Acer\Desktop\chess\stockfish-11-win\src')
  File "C:\Users\Acer\AppData\Local\Programs\Python\Python38-32\lib\site-packages\stockfish\models.py", line 33, in __init__
    self.stockfish = subprocess.Popen(
  File "C:\Users\Acer\AppData\Local\Programs\Python\Python38-32\lib\subprocess.py", line 854, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "C:\Users\Acer\AppData\Local\Programs\Python\Python38-32\lib\subprocess.py", line 1307, in _execute_child
    hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
PermissionError: [WinError 5] Zugriff verweigert

Probé diferentes descargas de Stockfish, ejecuté Idle o CMD como administrador, reinstalé y usé diferentes PC, pero de alguna manera no puedo trabajar con Stockfish. ¿Alguien puede ayudarme a evitar el acceso denegado? ¿Qué echo de menos al inicializar?

Respuestas

4 PranavHosangadi Aug 28 2020 at 23:45

El argumento debe apuntar al ejecutable Stockfish. Si descarga el zip v11 del sitio web de Stockfish , extráigalo y busque los directorios con los ejecutables.

lo extraje paraC:\Users\<username>\Downloads\stockfish-11-win

Los ejecutables están enC:\Users\<username>\Downloads\stockfish-11-win\Windows

Para usar el ejecutable, proporcione la ruta al ejecutable de la siguiente manera:

from stockfish import Stockfish

stockfish = Stockfish(r'C:\Users\<username>\Downloads\stockfish-11-win\Windows\stockfish_20011801_x64.exe')

El valor predeterminado para la ruta que proporciona es "stockfish", por lo que si agrega su directorio con los ejecutables a la ruta y cambia el nombre del exe que desea stockfish, debería poder hacer:

from stockfish import Stockfish

stockfish = Stockfish()

Re. tu comentario:

ningún otro "comando" relacionado con el stockfish funcionará: OSError: [Errno 22] Invalid argument... por lo que aparentemente solucionó un problema, pero el siguiente ocurrió instantáneamente.

Presumiblemente, ArgumentError se debe a que está pasando un argumento incorrecto. Por ejemplo, ejecuté los comandos en el archivo Léame en el repositorio de github y funciona perfectamente bien.