Forum: PC-Programmierung Python / PyInstaller: mit anderer Python Version kompilieren


von Rene K. (xdraconix)


Lesenswert?

Ich habe ein Script, welches auf mehreren Hosts (alle Linux) verteilt 
wird. Aus dem Script mache ich mit PyInstaller eine ausführbare Datei.

Das funktionierte soweit auch tadellos. Nun aber jedoch ist ein Problem 
aufgetreten.

Auf meinem Arbeitsrechner läuft ein Python 3.11 - auf den Clients, auf 
denen das Programm ausgeführt wird, ist die kleinste Version eine 3.9.

Nun war meine Annahme, das dies im Grunde keine Rolle spielt, jedoch 
liege ich da falsch. Die mit PyInstaller erstellte Datei läuft auf den 
Clients mit 3.9 und 3.10 nicht, es wird die fehlende 
libpython3.11.so.1.0 angemahnt und das Programm beendet.

Sehe ich das richtig, das pyinstaller garkeine reine Executable 
erstellt, sondern ein "bloß ein gepacktes" Script mit den Abhängigen 
Imports?

Auf den Clients kann ich teilweise die Python Version nicht anheben oder 
ändern. Kann ich aber entweder pyinstaller dazu bewegen mit einer 
anderen Version zu "kompilieren"?

Leider sehe ich auch keine Möglichkeit das Python3.11 auf meinem 
Arbeitsrechner (Debian 12) wieder zu 3.9 zu bewegen - gibt es da eine 
Möglichkeit?

von Kaj G. (Firma: RUB) (bloody)


Lesenswert?

Ohne weitere Argumente wird eine Binary mit shared libs erstellt. Da 
musst der ganze Ordner kopiert werden.
https://pyinstaller.org/en/stable/usage.html#cmdoption-D

Ruf Pyinstaller mal mit dem Argument --onefile auf.
Das erzeugt ein einziges Binary wo alles drin steckt.
https://pyinstaller.org/en/stable/usage.html#cmdoption-F

Problematisch wird das ganze nur, wenn auf den Clients eine 
andere/ältere Lib C Version installiert ist, als auf dem Rechner, auf 
dem Pyinstaller ausgeführt wird. Dann startet das Binary nicht.

: Bearbeitet durch User
von Rene K. (xdraconix)


Lesenswert?

Ja mit Pyinstaller lasse ich mir per --onefile ja die Binary erzeugen. 
Und nicht die libc sondern die libpython ist dann das Problem auf den 
Containern welche auf einer niedrigeren Version laufen.

Kann ich auf einer niedrigeren Version von 3.11 aus kompilieren lassen? 
(Z.b von 3.11 auf 3.9)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.