Python / PyInstaller: mit anderer Python Version kompilieren

OP #7553804
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?

(Firma: RUB) #7553863
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.

OP #7554723
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)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren