Jeśli używasz virtualenvwrapper (bardzo polecam to zrobić), możesz zdefiniować różne hooki (preactivate, postactivate, preactivate, postdeactivate) przy użyciu skryptów o tych samych nazwach w $VIRTUAL_ENV/bin/
. Potrzebujesz haka po aktywacji.
$ 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
Jeśli chcesz zachować tę konfigurację w katalogu projektu, po prostu utwórz łącze symboliczne z katalogu projektu do $VIRTUAL_ENV/bin/postactivate
.
$ rm $VIRTUAL_ENV/bin/postactivate
$ ln -s .env/postactivate $VIRTUAL_ENV/bin/postactivate
Możesz nawet zautomatyzować tworzenie dowiązań symbolicznych za każdym razem, gdy używasz mkvirtualenv .
Czyszczenie po dezaktywacji
Pamiętaj, że to nie posprząta po sobie. Po dezaktywacji virtualenv zmienna środowiskowa pozostanie. Aby wyczyścić symetrycznie, możesz dodać do $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
Pamiętaj, że jeśli używasz tego dla zmiennych środowiskowych, które mogą już być ustawione w twoim środowisku, to nieustawienie spowoduje ich całkowite wyłączenie przy opuszczaniu virtualenv. Więc jeśli jest to w ogóle prawdopodobne, możesz tymczasowo nagrać poprzednią wartość, a następnie odczytać ją ponownie po dezaktywacji.
Ustawiać:
$ 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
Test:
$ echo $SOME_VAR
banana
$ workon myenv
$ echo $SOME_VAR
apple
$ deactivate
$ echo $SOME_VAR
banana