Dans le cas où vous êtes à l'aide de virtualenvwrapper (je vous recommande fortement de le faire), vous pouvez définir différents crochets (preactivate, postactivate, predeactivate, postdeactivate) en utilisant les scripts avec les mêmes noms en $VIRTUAL_ENV/bin/
. Vous avez besoin de la postactivate crochet.
$ 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, il suffit de créer un lien symbolique à partir de votre répertoire de projet à l' $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 sur désactiver
Rappelez-vous que cette habitude de nettoyer après lui-même. Lorsque vous désactivez le virtualenv, la variable d'environnement persistent. Pour nettoyer de manière symétrique, vous pouvez ajouter à l' $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
Rappelez-vous que si vous utilisez ce pour les variables d'environnement qui peuvent déjà être définis dans votre environnement, puis les unset va être complètement retirés à quitter le virtualenv. Donc, si c'est vraisemblable vous pouvez enregistrer la valeur précédente, quelque part temporaire puis le lire sur désactiver.
Programme d'installation:
$ 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