Champ8888
Posts: 4
Joined: Fri May 31, 2019 1:33 pm

python-chess stockfish

Fri May 31, 2019 1:39 pm

Ich habe ein schachprogramm geschrieben das mit hilfe von Stockfish eine KI erstellt.
Auf Windows funktioniert es aber auf Linux bekomme ich immer eine Fehlermeldung

Code:

Code: Select all

import chess
import chess.engine




def zug(brett):
    engine = chess.engine.SimpleEngine.popen_uci("./stockfish-10-linux/Linux/stockfish_10_x64")
    global result
    global a
    board = brett

    result = engine.play(board, chess.engine.Limit(time=0.100))
    a = result.move

    engine.quit()

    return a

board = chess.Board()
zug(board)

Fehlermeldung:
Traceback (most recent call last):
File "/home/pi/Python-Programme/Zauberschach_fertig/schach_ki.py", line 21, in <module>
zug(board)
File "/home/pi/Python-Programme/Zauberschach_fertig/schach_ki.py", line 8, in zug
engine = chess.engine.SimpleEngine.popen_uci("./stockfish-10-linux/Linux/stockfish_10_x64")
File "/home/pi/.local/lib/python3.5/site-packages/chess/engine.py", line 2302, in popen_uci
return cls.popen(UciProtocol, command, timeout=timeout, debug=debug, setpgrp=setpgrp, **popen_args)
File "/home/pi/.local/lib/python3.5/site-packages/chess/engine.py", line 2294, in popen
return run_in_background(background, debug=debug)
File "/home/pi/.local/lib/python3.5/site-packages/chess/engine.py", line 193, in run_in_background
return future.result()
File "/usr/lib/python3.5/concurrent/futures/_base.py", line 405, in result
return self.__get_result()
File "/usr/lib/python3.5/concurrent/futures/_base.py", line 357, in __get_result
raise self._exception
File "/home/pi/.local/lib/python3.5/site-packages/chess/engine.py", line 172, in background
loop.run_until_complete(coroutine(future))
File "/usr/lib/python3.5/asyncio/base_events.py", line 466, in run_until_complete
return future.result()
File "/usr/lib/python3.5/asyncio/futures.py", line 293, in result
raise self._exception
File "/usr/lib/python3.5/asyncio/tasks.py", line 239, in _step
result = coro.send(None)
File "/home/pi/.local/lib/python3.5/site-packages/chess/engine.py", line 2283, in background
transport, protocol = yield from Protocol.popen(command, setpgrp=setpgrp, **popen_args)
File "/home/pi/.local/lib/python3.5/site-packages/chess/engine.py", line 803, in popen
return (yield from loop.subprocess_exec(cls, *command, **popen_args))
File "/usr/lib/python3.5/asyncio/base_events.py", line 1189, in subprocess_exec
bufsize, **kwargs)
File "/usr/lib/python3.5/asyncio/unix_events.py", line 191, in _make_subprocess_transport
**kwargs)
File "/usr/lib/python3.5/asyncio/base_subprocess.py", line 39, in __init__
stderr=stderr, bufsize=bufsize, **kwargs)
File "/usr/lib/python3.5/asyncio/unix_events.py", line 695, in _start
universal_newlines=False, bufsize=bufsize, **kwargs)
File "/usr/lib/python3.5/subprocess.py", line 676, in __init__
restore_signals, start_new_session)
File "/usr/lib/python3.5/subprocess.py", line 1282, in _execute_child
raise child_exception_type(errno_num, err_msg)
OSError: [Errno 8] Exec format error
Kann mir bitte jemand helfen?

holgerble
Posts: 36
Joined: Wed Mar 23, 2016 4:15 pm

Re: python-chess stockfish

Mon Jun 03, 2019 9:56 am

Falsche Bibliothek ???

x64 ???

stretch ist 32 Bit Betriebssystem!!

Champ8888
Posts: 4
Joined: Fri May 31, 2019 1:33 pm

Re: python-chess stockfish

Mon Jun 03, 2019 5:10 pm

Ich habe allerdings keine 32 Bit Version für Linux gefunden.
Außerdem bin ich ziemlich verwirrt da es bei Windows eine exe Datei ist und bei Linux eine "Gemeinsame Bibliothek". Was auch immer das ist.

User avatar
mline
Posts: 1295
Joined: Sun Jan 27, 2013 1:47 pm
Location: Austria, Vienna

Re: python-chess stockfish

Mon Jun 03, 2019 8:18 pm

Champ8888 wrote:
Mon Jun 03, 2019 5:10 pm
Ich habe allerdings keine 32 Bit Version für Linux gefunden.
Weil es keine gibt. Wenn du das Binary für raspberry pi brauchst (arm) dann müsstest du dir die source laden und selbst kompilieren. Oder falls es das ist was du benötigst, installiere dir das Paket aus der Repository für raspbian

Code: Select all

sudo apt-get install stockfish
Champ8888 wrote:
Mon Jun 03, 2019 5:10 pm
Außerdem bin ich ziemlich verwirrt da es bei Windows eine exe Datei ist und bei Linux eine "Gemeinsame Bibliothek". Was auch immer das ist.
Es wird sich bei der von der Seite herunterladbaren Datei auch um eine ausführbare Datei handeln. Allerdings läuft die nur auf der Architektur x86_64 (oder kurz x64) und nicht auf arm. Bibliotheken haben bei Linux die Extension .so
<~~>

Champ8888
Posts: 4
Joined: Fri May 31, 2019 1:33 pm

Re: python-chess stockfish

Tue Jun 04, 2019 3:44 pm

Ich habe jetzt mit dem Befehl stockfish installiert.
Aber was muss ich in die Zeile: engine = chess.engine.SimpleEngine.popen_uci("") schreiben?
B.z.w. muss ich dann einen anderen Befehl verwenden?

User avatar
mline
Posts: 1295
Joined: Sun Jan 27, 2013 1:47 pm
Location: Austria, Vienna

Re: python-chess stockfish

Tue Jun 04, 2019 4:26 pm

Ich vermute mal /usr/bin/stockfish
<~~>

Champ8888
Posts: 4
Joined: Fri May 31, 2019 1:33 pm

Re: python-chess stockfish

Tue Jun 04, 2019 4:41 pm

Jetzt funktioniert es endlich. :D
Es war allerdings unter Games gespeichert. Warum auch immer.

Vielen Dank für die Hilfe.

Return to “Deutsch”