ไม่สามารถเรียกใช้ 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 หากคุณดาวน์โหลดv11 zip จากเว็บไซต์ 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()

เรื่อง ความคิดเห็นของคุณ:

"คำสั่ง" อื่น ๆ ที่เกี่ยวข้องกับ stockfish จะไม่ทำงาน: OSError: [Errno 22] Invalid argument... ดังนั้นดูเหมือนว่าจะแก้ไขปัญหาได้ แต่ครั้งต่อไปเกิดขึ้นทันที

ArgumentError น่าจะเป็นเพราะคุณส่งอาร์กิวเมนต์ผิด ตัวอย่างเช่นฉันรันคำสั่งในreadme ในที่เก็บ githubและทำงานได้ดีอย่างสมบูรณ์