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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.