Impossibile eseguire Stockfish su Python

Aug 28 2020

So che questo non è un forum di programmazione, anche se è legato agli scacchi, da qui il posizionamento qui. Fondamentalmente, sto provando a configurare lo stoccafisso con Python sul mio PC. L'ho installato tramite pip install stockfish.

Quindi sono andato avanti e ho provato a configurare lo Stockfish tramite:

from stockfish import Stockfish

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

Ciò genera un WinError 5, accesso negato:

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

Ho provato diversi download di Stockfish, eseguendo Idle o CMD come amministratore, reinstallato e utilizzato PC diversi, ma in qualche modo non riesco a lavorare con Stockfish - qualcuno in grado di aiutarmi a bypassare l'accesso negato? Cosa mi perdo durante l'inizializzazione?

Risposte

4 PranavHosangadi Aug 28 2020 at 23:45

L'argomento deve puntare all'eseguibile Stockfish. Se scarichi lo zip v11 dal sito di Stockfish , estrailo e trova le directory con gli eseguibili.

L'ho estratto aC:\Users\<username>\Downloads\stockfish-11-win

Gli eseguibili sono inC:\Users\<username>\Downloads\stockfish-11-win\Windows

Per usare l'eseguibile, dai il percorso all'eseguibile in questo modo:

from stockfish import Stockfish

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

Il valore predefinito per il percorso che dai è "stockfish", quindi se aggiungi la tua directory con gli eseguibili al percorso e rinomini l'exe che desideri stockfish, dovresti essere in grado di fare:

from stockfish import Stockfish

stockfish = Stockfish()

Rif. il tuo commento:

nessun altro "comando" relativo allo stoccafisso funzionerà: OSError: [Errno 22] Invalid argument... quindi apparentemente ha risolto un problema ma il successivo si è verificato immediatamente.

L'ArgumentError è presumibilmente perché stai passando un argomento sbagliato. Ad esempio, ho eseguito i comandi nel readme nel repository github e funziona perfettamente.