Wenn Sie virtualenvwrapper verwenden (ich empfehle dies dringend), können Sie verschiedene Hooks (voraktivieren, nachaktivieren, voraktivieren, nachaktivieren) mithilfe der Skripte mit denselben Namen in definieren $VIRTUAL_ENV/bin/
. Sie benötigen den Postaktivierungshaken.
$ workon myvenv
$ cat $VIRTUAL_ENV/bin/postactivate
#!/bin/bash
# This hook is run after this virtualenv is activated.
export DJANGO_DEBUG=True
export S3_KEY=mykey
export S3_SECRET=mysecret
$ echo $DJANGO_DEBUG
True
Wenn Sie diese Konfiguration in Ihrem Projektverzeichnis behalten möchten, erstellen Sie einfach einen Symlink von Ihrem Projektverzeichnis zu $VIRTUAL_ENV/bin/postactivate
.
$ rm $VIRTUAL_ENV/bin/postactivate
$ ln -s .env/postactivate $VIRTUAL_ENV/bin/postactivate
Sie können sogar die Erstellung der Symlinks bei jeder Verwendung von mkvirtualenv automatisieren .
Aufräumen beim Deaktivieren
Denken Sie daran, dass dies nicht nach sich selbst aufräumt. Wenn Sie die virtuelle Umgebung deaktivieren, bleibt die Umgebungsvariable bestehen. Zum symmetrischen Aufräumen können Sie hinzufügen $VIRTUAL_ENV/bin/predeactivate
.
$ cat $VIRTUAL_ENV/bin/predeactivate
#!/bin/bash
# This hook is run before this virtualenv is deactivated.
unset DJANGO_DEBUG
$ deactivate
$ echo $DJANGO_DEBUG
Denken Sie daran, dass wenn Sie dies für Umgebungsvariablen verwenden, die möglicherweise bereits in Ihrer Umgebung festgelegt sind, das Deaktivieren dazu führt, dass diese beim Verlassen der virtuellen Umgebung vollständig deaktiviert werden. Wenn dies also überhaupt wahrscheinlich ist, können Sie den vorherigen Wert irgendwo vorübergehend aufzeichnen und ihn dann bei Deaktivierung wieder einlesen.
Konfiguration:
$ cat $VIRTUAL_ENV/bin/postactivate
#!/bin/bash
# This hook is run after this virtualenv is activated.
if [[ -n $SOME_VAR ]]
then
export SOME_VAR_BACKUP=$SOME_VAR
fi
export SOME_VAR=apple
$ cat $VIRTUAL_ENV/bin/predeactivate
#!/bin/bash
# This hook is run before this virtualenv is deactivated.
if [[ -n $SOME_VAR_BACKUP ]]
then
export SOME_VAR=$SOME_VAR_BACKUP
unset SOME_VAR_BACKUP
else
unset SOME_VAR
fi
Prüfung:
$ echo $SOME_VAR
banana
$ workon myenv
$ echo $SOME_VAR
apple
$ deactivate
$ echo $SOME_VAR
banana