Impossible d'exécuter Stockfish sur Python

Aug 28 2020

Je sais que ce n'est pas un forum de programmation, bien qu'il soit lié aux échecs, d'où le placement ici. En gros, j'essaye de configurer Stockfish avec Python sur mon PC. Je l'ai installé via pip install stockfish.

Alors j'ai continué et j'ai essayé de configurer le Stockfish via:

from stockfish import Stockfish

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

Cela lève un WinError 5, accès refusé:

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

J'ai essayé différents téléchargements Stockfish, exécutant Idle ou CMD en tant qu'administrateur, réinstallé et utilisé différents PC, mais je ne parviens pas à travailler avec Stockfish - n'importe qui peut m'aider à contourner l'accès refusé? Qu'est-ce que je manque lors de l'initialisation?

Réponses

4 PranavHosangadi Aug 28 2020 at 23:45

L'argument doit pointer vers l'exécutable Stockfish. Si vous téléchargez le zip v11 à partir du site Web de Stockfish , extrayez-le et recherchez les répertoires contenant les exécutables.

Je l'ai extrait vers C:\Users\<username>\Downloads\stockfish-11-win

Les exécutables sont dans C:\Users\<username>\Downloads\stockfish-11-win\Windows

Pour utiliser l'exécutable, donnez le chemin de l'exécutable comme ceci:

from stockfish import Stockfish

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

La valeur par défaut du chemin que vous donnez est "stockfish", donc si vous ajoutez votre répertoire avec les exécutables au chemin et renommez l'exe que vous voulez stockfish, vous devriez pouvoir faire:

from stockfish import Stockfish

stockfish = Stockfish()

Ré. votre commentaire:

aucune autre "commande" liée au stockfish ne fonctionnera: OSError: [Errno 22] Invalid argument... donc cela a apparemment résolu un problème mais le suivant s'est produit instantanément.

ArgumentError est probablement dû au fait que vous passez un mauvais argument. Par exemple, j'ai exécuté les commandes dans le fichier readme dans le référentiel github et cela fonctionne parfaitement bien.