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?
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.