Wenn Sie das Verzeichnis virtualenv in git speichern, können Sie, wie bereits erwähnt, die gesamte App bereitstellen, indem Sie einfach einen git-Klon ausführen (plus Apache / mod_wsgi installieren und konfigurieren). Ein potenziell bedeutendes Problem bei diesem Ansatz ist, dass unter Linux der vollständige Pfad in den Aktivierungs-, django-admin.py-, easy_install- und pip-Skripten des venv fest codiert wird. Dies bedeutet, dass Ihre virtuelle Umgebung nicht vollständig funktioniert, wenn Sie einen anderen Pfad verwenden möchten, um möglicherweise mehrere virtuelle Hosts auf demselben Server auszuführen. Ich denke, die Website funktioniert möglicherweise tatsächlich mit den in diesen Dateien falschen Pfaden, aber Sie würden Probleme haben, wenn Sie das nächste Mal versuchen, pip auszuführen.
Die bereits gegebene Lösung besteht darin, genügend Informationen in git zu speichern, damit Sie während der Bereitstellung die virtuelle Umgebung erstellen und die erforderlichen Pip-Installationen durchführen können. Normalerweise werden Benutzer ausgeführt pip freeze
, um die Liste abzurufen, und sie dann in einer Datei mit dem Namen require.txt gespeichert. Es kann mit geladen werden pip install -r requirements.txt
. RyanBrady hat bereits gezeigt, wie Sie die Bereitstellungsanweisungen in einer einzigen Zeile aneinanderreihen können:
# before 15.1.0
virtualenv --no-site-packages --distribute .env &&\
source .env/bin/activate &&\
pip install -r requirements.txt
# after deprecation of some arguments in 15.1.0
virtualenv .env && source .env/bin/activate && pip install -r requirements.txt
Persönlich habe ich diese einfach in ein Shell-Skript eingefügt, das ich nach dem Git-Klon oder Git-Pull ausführe.
Das Speichern des Verzeichnisses virtualenv macht es auch etwas schwieriger, Pip-Upgrades durchzuführen, da Sie die aus dem Upgrade resultierenden Dateien manuell hinzufügen / entfernen und festschreiben müssen. Bei einer Datei "resources.txt" ändern Sie einfach die entsprechenden Zeilen in "resources.txt" und führen sie erneut aus pip install -r requirements.txt
. Wie bereits erwähnt, reduziert dies auch das "Festschreiben von Spam".