Wie mache ich mein Python-Skript einfach portabel? oder wie man mit allen Modulabhängigkeiten in binäre kompilieren?

8

Gibt es eine Möglichkeit, Python-Skript in Binärdateien zu kompilieren? Ich habe ein Datei-Python-Skript, das viele Module verwendet. Was ich möchte, ist, seine Kopie auf anderen Maschinen (freebsd) zu haben, aber ohne alle benötigten Module auf jedem Host zu installieren.

Was sind mögliche Lösungen in solchen Fällen?

Vielen Dank im Voraus!

    
Andriy 29.12.2010, 17:50
quelle

5 Antworten

15

Programme, die tun können, wonach Sie fragen:

Aber wie bereits erwähnt, können Sie auch ein Paket mit Distribute erstellen und die anderen Pakete als Abhängigkeiten haben. Sie können dann pip verwenden, um dieses Paket zu installieren, und es wird alle Pakete installieren. Sie müssen jedoch immer noch Python und pip installieren.

    
Lennart Regebro 29.12.2010, 23:30
quelle
3

cx_freeze hängt Ihre Python-Skripte an einen eigenständigen Python-Loader an und erzeugt ein Verzeichnis, das das Programm und die Abhängigkeiten der gemeinsamen Bibliothek enthält. Sie können dann die resultierende Distribution auf andere Maschinen unabhängig von Python oder Ihren Modulen kopieren.

%Vor%

Eine bessere Antwort könnte sein, ein PIP-Paket zu erstellen, das diese dritten Module als Abhängigkeiten identifiziert, so dass die Installation so einfach wie "pip install mypackage; ./package"

sein kann     
swdunlop 29.12.2010 18:20
quelle
2

Python sucht auch im aktuellen Verzeichnis nach import -Modulen, sodass Sie diese nicht im Python-Verzeichnis installieren müssen. Ihre Verteilungsdateistruktur könnte wie folgt aussehen:

%Vor%

Wo main.py import module1, module2

hat     
Ian Wetherbee 29.12.2010 18:17
quelle
2

Wahrscheinlich möchten Sie aus Ihrem Skript ein Python-Paket erstellen. Am Ende können Sie pip install mypackage auf jedem Host ausführen und alle erforderlichen Module werden automatisch heruntergeladen und installiert.

Siehe diese Frage zur Erstellung eines solchen Paket .

    
Jochen Ritzel 29.12.2010 18:17
quelle
0

Ich habe ein Skript, das diese Module importiert: urllib, urllib2, cookielib, BaseHTTPServer, sys, tempfile, paramiko, Protokollierung, re, OptionParser, lxml.

  

Sie möchten wahrscheinlich ein Python erstellen   Paket von Ihrem Skript. Schlussendlich   Sie können pip installieren   Mein Paket auf jedem Host und all   erforderliche Module werden heruntergeladen   und automatisch installiert.

  1. Angenommen, ich habe ein Skript als Python-Paket
  2. hat es auf einen anderen Host kopiert
  3. hat pip install mypackage
  4. gestartet

Wie ich verstanden habe, wird es nach Modulen suchen, die importiert werden sollen und herunterladen und Abhängigkeiten installieren .

Das ist in meinem Fall keine sehr gute Lösung. Benutzer auf anderen Hosts (~ 20) sollten Skripts ohne zusätzliche Download- / Installationsprozeduren ausführen können.

Ich hoffe, dass cx_freeze das ist, was ich brauche. Danke für deine Antworten.

    
Andriy 29.12.2010 20:24
quelle

Tags und Links