Bündel Python-Skript und Abhängigkeiten in einer einzigen Datei

Ich habe ein paar Skripte, die eine eigene Kopie von einigen Funktionen hatten, also habe ich diese Funktionen in ein Modul extrahiert und die Skripte importieren die Funktion. Dieses Skript soll auf eine Reihe von Linux-Servern kopiert und ausgeführt werden. Wenn die Skripte eigenständig funktionierten, würde ich einfach die Dateien auf die Server kopieren und "python" ausführen.

Ich habe einen zentralen Management-Server, der die Skripte auf den verschiedenen Servern kopiert und ausführt.

Ich habe einige Lesung auf PythonEier gemacht, aber könnte einige Rat auf Methode zu gehen, um zu gehen. Die Art, wie ich es heute tue, ist zu kopieren und einfach das Python-Skript laufen. Da das gut geht, dachte ich vielleicht, dass es eine Möglichkeit gibt, die Skripte selbst mit dem (hauseigenen) Modul zu bündeln, auf das sie angewiesen sind, das Bündel auf die Server kopieren und ausführen. Sehen Sie nicht, warum ich etwas mit "Pip" installieren müsste.

Nun, welche Art von Setup würden Sie empfehlen? Soll ich vielleicht Eier auf meinem lokalen Computer bauen und den Management-Server die Ei-Datei auf die Server kopieren? Ich würde es vorziehen, alles zu kopieren, was der Server vom Management-Server benötigt, anstatt die Server selbst Abhängigkeiten herunterzuziehen, so dass ich nicht mehr Löcher alle Firewalls schlagen muss. Da Eier in der Regel müssen Abhängigkeiten zu ziehen, vielleicht Eier sind nicht der Weg zu gehen?

Die meisten meiner Server laufen python 2.6, aber ich habe einige laufende python 2.4 und 3.2.

Grüße, Kenneth

2 Solutions collect form web for “Bündel Python-Skript und Abhängigkeiten in einer einzigen Datei”

Vielleicht möchten Sie sich die Twitter-PEX-Bibliothek ansehen, die ausführbare Dateien aus Python-Paketen erstellen kann: https://pex.readthedocs.org/de/latest/whatispex.html

.pex-Dateien sind nur sorgfältig konstruierte Zip-Dateien mit einem #! / Usr / bin / env python und spezielle __main.py__

Update 2016 : Wagen hilft beim Bau von Radpaketen mit Abhängigkeiten für die Offline-Installation.


Für einfache Projekte, die alle Quellen zusammen in einem Ordner halten und das Kopieren als Ganzes ist gut genug. Sie können git verwenden , um Ihren Code in ein zentrales Repository zu schieben und es auf Ihren Server zu ziehen, ohne irgendwelche Pakete zu bauen. Fabric und Ansible sind zwei Werkzeuge, die Ihnen helfen können, den Bereitstellungsprozess zu automatisieren. (Z. B. ferngesteuertes git pull und lösche alle deine pyc Dateien).

Wenn Sie gemeinsame Abhängigkeiten zwischen Projekten haben, sind Pip und Räder die modernen Alternativen zu Eiern:

Sie können ein einfaches Bündel erstellen, das alle Abhängigkeiten enthält, die Sie mit der Installation installieren möchten.

 $ tempdir=$(mktemp -d /tmp/wheelhouse-XXXXX) $ pip wheel -r requirements.txt --wheel-dir=$tempdir $ cwd=`pwd` $ (cd "$tempdir"; tar -cjvf "$cwd/bundled.tar.bz2" *) 

Sobald du ein Bündel hast, kannst du es dann deinstallieren:

 $ tempdir=$(mktemp -d /tmp/wheelhouse-XXXXX) $ (cd $tempdir; tar -xvf /path/to/bundled.tar.bz2) $ pip install --force-reinstall --ignore-installed --upgrade --no-index --use-wheel --no-deps $tempdir/* 

(Aus Pip Docs )

  • Wechseln Sie in das Verzeichnis eines Python-Skripts
  • Datei Manipulation: Scripting Frage
  • Würde Python einen guten Ersatz für die Windows-Befehlszeilen- / Batch-Skripte machen?
  • Kann die MySQL-Quellabfrage nicht mit dem Python mysqldb-Modul arbeiten
  • Verwenden Sie Python-Skript, um Daten aus Excel-Blatt zu extrahieren und in die Website einzugeben
  • Verwenden Sie die Twitter-API und Python zu Obatain Retweeter's id
  • Ein Python-Skript auf alle Dateien in einem Verzeichnis ausführen
  • Wie man durch mehrere Ergebnisse Seiten, wenn Web-Scraping mit schönen Suppe iterieren
  • Wie kann ich Sanddose Python in reiner Python?
  • Wie könnte ich Lua in Python 3.x einbetten?
  • Zweck von #! / Usr / bin / python3
  • Python ist die beste Programmiersprache der Welt.