Si vous utilisez virtualenvwrapper (je vous recommande vivement de le faire), vous pouvez définir différents hooks (préactiver, postactiver, prédéactiver, postdésactiver) en utilisant les scripts avec les mêmes noms dans $VIRTUAL_ENV/bin/
. Vous avez besoin du crochet de post-activation.
$ 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
Si vous souhaitez conserver cette configuration dans votre répertoire de projet, créez simplement un lien symbolique à partir de votre répertoire de projet vers $VIRTUAL_ENV/bin/postactivate
.
$ rm $VIRTUAL_ENV/bin/postactivate
$ ln -s .env/postactivate $VIRTUAL_ENV/bin/postactivate
Vous pouvez même automatiser la création des liens symboliques chaque fois que vous utilisez mkvirtualenv .
Nettoyage lors de la désactivation
N'oubliez pas que cela ne nettoiera pas après lui-même. Lorsque vous désactivez virtualenv, la variable d'environnement persiste. Pour nettoyer symétriquement, vous pouvez ajouter à $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
N'oubliez pas que si vous l'utilisez pour des variables d'environnement qui peuvent déjà être définies dans votre environnement, la désactivation entraînera leur désactivation complète lorsque vous quittez virtualenv. Donc, si cela est probable, vous pouvez enregistrer la valeur précédente quelque part temporairement, puis la relire lors de la désactivation.
Installer:
$ 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
Tester:
$ echo $SOME_VAR
banana
$ workon myenv
$ echo $SOME_VAR
apple
$ deactivate
$ echo $SOME_VAR
banana