Ich verwende im Grunde genommen David Sickmillers Antwort mit etwas mehr Automatisierung. Ich erstelle eine (nicht ausführbare) Datei auf der obersten Ebene meines Projekts mit dem Namen activate
und dem folgenden Inhalt:
[ -n "$BASH_SOURCE" ] \
|| { echo 1>&2 "Quelle (.) dies mit Bash."; exit 2; }
(
cd "$(dirname "$BASH_SOURCE")"
[ -d .build/virtualenv ] || {
virtualenv .build/virtualenv
. .build/virtualenv/bin/activate
pip install -r requirements.txt
}
)
. "$(dirname "$BASH_SOURCE")/.build/virtualenv/bin/activate"
(Wie in Davids Antwort angenommen wird, setzen Sie voraus, dass Sie ein pip freeze > requirements.txt
durchführen, um Ihre Anforderungsliste auf dem neuesten Stand zu halten.)
Das obige gibt die allgemeine Idee wieder; das tatsächliche aktivieren Skript (Dokumentation), das ich normalerweise verwende, ist etwas ausgefeilter und bietet beispielsweise eine -q
(leise) Option, verwendet python
, wenn python3
nicht verfügbar ist, usw.
Dies kann dann aus jedem aktuellen Arbeitsverzeichnis geladen werden und wird ordnungsgemäß aktiviert, indem zuerst die virtuelle Umgebung eingerichtet wird, falls erforderlich. Mein Testskript auf oberster Ebene hat normalerweise Code in dieser Art, damit es ausgeführt werden kann, ohne dass der Entwickler zuerst aktiviert werden muss:
cd "$(dirname "$0")"
[[ $VIRTUAL_ENV = $(pwd -P) ]] || . ./activate
Das Laden von ./activate
und nicht von activate
ist hier wichtig, da letzteres jede andere activate
in Ihrem Pfad finden wird, bevor es diejenige im aktuellen Verzeichnis findet.