Невозможно запустить Stockfish на Python

Aug 28 2020

Я знаю, что это не форум по программированию, хотя он связан с шахматами, отсюда и размещение здесь. По сути, я пытаюсь настроить Stockfish с Python на свой компьютер. Установил через pip install stockfish.

Итак, я продолжил и попытался настроить Stockfish с помощью:

from stockfish import Stockfish

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

Это вызывает WinError 5, доступ запрещен:

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

Я пробовал разные загрузки Stockfish, запускал Idle или CMD от имени администратора, переустанавливал и использовал разные ПК, но мне почему-то не удается работать со Stockfish - кто-нибудь может мне помочь, обойдя отказ в доступе? Что я упускаю при инициализации?

Ответы

4 PranavHosangadi Aug 28 2020 at 23:45

Аргумент должен указывать на исполняемый файл Stockfish. Если вы загружаете zip-архив v11 с веб-сайта Stockfish , распакуйте его и найдите каталоги с исполняемыми файлами .

Я извлек его в C:\Users\<username>\Downloads\stockfish-11-win

Исполняемые файлы находятся в C:\Users\<username>\Downloads\stockfish-11-win\Windows

Чтобы использовать исполняемый файл, укажите путь к исполняемому файлу следующим образом:

from stockfish import Stockfish

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

Значение по умолчанию для указанного вами пути равно "stockfish", поэтому, если вы добавите свой каталог с исполняемыми файлами в путь и переименуете нужный exe-файл stockfish, вы должны иметь возможность:

from stockfish import Stockfish

stockfish = Stockfish()

Re. твой комментарий:

никакие другие "команды", связанные с stockfish, не будут работать: OSError: [Errno 22] Invalid argument... так что, казалось бы, проблема решена, но следующая сразу же возникла.

Вероятно, ArgumentError возникает из-за того, что вы передаете неправильный аргумент. Например, я запустил команды в файле readme в репозитории github, и он отлично работает.