Ich habe ein Projekt mit mehreren Abhängigkeiten mit virtualenv und pip installiert. Ich möchte mein Projekt auf einem Server ausführen, auf dem pip nicht installiert ist. Die Installation von pip ist leider keine Option.

Gibt es eine Möglichkeit, meine erforderlichen Pakete zu exportieren und mit meinem Projekt zu bündeln? Was ist der gemeinsame Ansatz in dieser Situation?

6
fwind 11 Aug. 2015 im 16:43

3 Antworten

Beste Antwort

Twitter verwendet pex Dateien, um Python-Code mit seinen Abhängigkeiten zu bündeln. Dadurch wird eine einzelne Datei erstellt. Ein weiteres relevantes Tool ist platter, mit dem auch die Komplexität der Bereitstellung von Python-Code auf a reduziert werden soll Server.

Eine andere Alternative besteht darin, selbst ein Tool zu schreiben, das eine Zip-Datei mit Python und Abhängigkeiten erstellt und an der richtigen Stelle auf dem Server entpackt.

In Python 3.5 wurde das Modul zipapp eingeführt, um die Unterstützung dafür zu verbessern Art der Bereitstellung / Verwendung von Code. Auf diese Weise können Sie die Erstellung von Zip-Dateien mit Python-Code verwalten und diese direkt mit dem Python-Interpreter ausführen.

6
Simeon Visser 22 Sept. 2015 im 14:13

Dies liegt möglicherweise außerhalb des Rahmens der Frage. Wenn Sie jedoch Anwendungen auf Servern mit ihren Abhängigkeiten bereitstellen möchten, sehen Sie sich Virtualisierungs- und Linux-Container an.

Es ist bei weitem die am häufigsten verwendete Lösung für dieses Problem und funktioniert mit jeder Art von Anwendung (Python oder nicht). Es ist leichtgewichtig (der Leistungseinbruch von LXC ist in den meisten Fällen nicht spürbar, und das Isolieren von Apps ist eine großartige Funktion ).

Docker-Container sind nicht nur derzeit im Trend, sondern auch eine sehr bequeme Möglichkeit, Anwendungen bereitzustellen, ohne sich um Abhängigkeiten usw. kümmern zu müssen.

Gleiches gilt für Entwicklungsumgebungen mit Landstreichern.

0
Eloims 11 Aug. 2015 im 14:45

Die Antwort von @Simeon Visser ist ein guter Weg, um damit umzugehen. Meins ist es, mein Python-Projekt mit buildout zu erstellen.

0
FunkySayu 11 Aug. 2015 im 14:00