Não é possível executar o Stockfish no Python

Aug 28 2020

Eu sei que este não é um fórum de programação, embora seja relacionado ao xadrez, daí a colocação aqui. Basicamente, estou tentando configurar o stockfish com o Python no meu PC. Eu instalei pelo pip install stockfish.

Então eu fui e tentei configurar o Stockfish via:

from stockfish import Stockfish

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

Isso lança um WinError 5, acesso negado:

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

Eu tentei diferentes downloads do Stockfish, executando o Idle ou CMD como administrador, reinstalei e usei PCs diferentes, mas de alguma forma não consigo trabalhar com o Stockfish - alguém capaz de me ajudar a contornar o acesso negado? O que sinto falta ao inicializar?

Respostas

4 PranavHosangadi Aug 28 2020 at 23:45

O argumento precisa apontar para o executável do Stockfish. Se você baixar o zip v11 do site do Stockfish , extraia-o e encontre os diretórios com os executáveis.

eu extraí paraC:\Users\<username>\Downloads\stockfish-11-win

Os executáveis ​​estão emC:\Users\<username>\Downloads\stockfish-11-win\Windows

Para usar o executável, forneça o caminho para o executável assim:

from stockfish import Stockfish

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

O valor padrão para o caminho que você fornece é "stockfish", portanto, se você adicionar seu diretório com os executáveis ​​ao caminho e renomear o exe que deseja stockfish, poderá fazer:

from stockfish import Stockfish

stockfish = Stockfish()

Ré. seu comentário:

nenhum outro "comando" relacionado ao bacalhau funcionará: OSError: [Errno 22] Invalid argument... então aparentemente resolveu um problema, mas o próximo ocorreu instantaneamente.

O ArgumentError é presumivelmente porque você está passando um argumento errado. Por exemplo, executei os comandos no readme no repositório do github e funcionou perfeitamente.