Không thể chạy Stockfish trên Python

Aug 28 2020

Tôi biết đây không phải là một diễn đàn lập trình, mặc dù nó liên quan đến cờ vua, do đó, vị trí của nó ở đây. Về cơ bản, tôi đang cố gắng thiết lập stockfish bằng Python trên PC của mình. Tôi đã cài đặt nó qua pip install stockfish.

Vì vậy, tôi đã tiếp tục và cố gắng thiết lập Stockfish thông qua:

from stockfish import Stockfish

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

Điều đó ném WinError 5, quyền truy cập bị từ chối:

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

Tôi đã thử các Tải xuống Stockfish khác nhau, chạy Idle hoặc CMD với tư cách quản trị viên, cài đặt lại và sử dụng các PC khác nhau, nhưng bằng cách nào đó tôi không thể làm việc với Stockfish - bất kỳ ai có thể giúp tôi vượt qua quyền truy cập bị từ chối? Tôi bỏ lỡ điều gì khi khởi tạo?

Trả lời

4 PranavHosangadi Aug 28 2020 at 23:45

Đối số cần trỏ đến tệp thực thi Stockfish. Nếu bạn tải xuống zip v11 từ trang web Stockfish , hãy giải nén nó và tìm các thư mục có tệp thực thi.

Tôi đã trích xuất nó vào C:\Users\<username>\Downloads\stockfish-11-win

Các tệp thực thi có trong C:\Users\<username>\Downloads\stockfish-11-win\Windows

Để sử dụng tệp thực thi, hãy cung cấp đường dẫn đến tệp thực thi như sau:

from stockfish import Stockfish

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

Giá trị mặc định cho đường dẫn bạn cung cấp là "stockfish", vì vậy nếu bạn thêm thư mục của mình với các tệp thực thi vào đường dẫn và đổi tên exe mà bạn muốn stockfish, bạn sẽ có thể thực hiện:

from stockfish import Stockfish

stockfish = Stockfish()

Re. bình luận của bạn:

không có "lệnh" liên quan đến cá kho nào khác sẽ hoạt động: OSError: [Errno 22] Invalid argument... vì vậy nó dường như đã khắc phục được sự cố nhưng ngay lập tức xảy ra sự cố tiếp theo.

ArgumentError có thể là do bạn đang truyền một đối số sai. Ví dụ: tôi đã chạy các lệnh trong readme trong kho lưu trữ github và nó hoạt động hoàn toàn tốt.