2015-06-10 11 views
5

Ich habe normalerweise meine Flask-Anwendungen mit einem ziemlich einfachen Fabric-Skript, das die Quelle auf dem Zielrechner, verwendet pip installiert, um Abhängigkeiten zu installieren, dann gefeuert upsgi mit allen notwendigen Einstellungen und aus es ging.Python/Flask Deployment ohne Pip

Ich habe jedoch ein neues Problem, dass einige neue Sicherheitseinstellungen in unseren Umgebungen uns den Zugriff außerhalb des Netzwerks blockiert haben, so dass der Versuch, pip zur Installation unserer Abhängigkeiten zu verwenden, fehlschlägt. Ich schaute in Verwendung python setup.py sdist um ein Paket zu erstellen denken, dass dies alles auf dem Entwickler-Rechner bauen würde dann konnte ich die .tar.gz auf den Deployment-Rechner hochladen und installieren, aber es versucht immer noch Kontakt pip, um die Abhängigkeiten zu erhalten.

Gibt es eine Möglichkeit, ein vollständig kompiliertes Paket mit Abhängigkeiten und allem, was ich zur Bereitstellung auf meinem Server verwenden könnte, zu erhalten? Gibt es eine sdist Einstellung, die ich verwenden kann?

Antwort

2

Ihre Build-Rechner ist mit dem Ziel binärkompatibel Unter der Annahme, oder Sie keine kompilierte Erweiterungen benötigen, können Sie pip wheel verwenden, können Sie zu kompilieren Projekt und alle seine Abhängigkeiten zu den Rädern, die Dateien auf den Server kopieren und pip install nur aus dem Radverzeichnis.

# on build machine 
cd myproject 
pip wheel --wheel-dir wheelbase . 
scp -r wheelbase [email protected] 

# on target machine 
pip install --no-index --find-links=wheelbase myproject 

Sie sollten auch den ungeraden Sdist in das --find-Links-Verzeichnis kopieren, wobei in diesem Fall pip aus dem Sdist installieren können, wenn Sie auf dem Server neu kompilieren.

+0

Das sieht vielversprechend aus. Ich habe es versucht und es scheint, als hätte es nicht alle Pakete installiert, die ich brauchte. Ich habe versucht, das Rad aus der requirements.txt-Datei zu bauen, die alle meine Pakete zu bekommen schien, aber als ich versuchte, sie auf der Box zu installieren, bekam ich MarkupSafe-0.23-cp27-keine-linux_i686.whl ist kein unterstütztes Rad auf dieser Plattform . Ich schaute in das Radverzeichnis und es hat dieses Rad. Meine Dev-Maschine ist Ubuntu und mein Ziel ist CentOS. Irgendwelche Vorschläge? – ThrowsException

+0

Laden Sie den MarkupSafe sdist herunter und legen Sie ihn auch in das Radverzeichnis. Pip sollte schlau genug sein, um die Zielmaschine zu bauen. Oder bauen Sie einfach auf einer CentOS VM auf. https://pypi.python.org/pypi/MarkupSafe – joeforker

+0

Danke. Ich habe das letztere gemacht. Erbaut auf einer vorhandenen Centos Maschine und kopiert den Wheeldir über. Scheint alles zu haben, was ich jetzt brauche. – ThrowsException