Caso esteja usando o virtualenvwrapper (eu recomendo isso), você pode definir diferentes ganchos (pré-ativar, pós-ativar, pré-ativar, pós-desativar) usando os scripts com os mesmos nomes em $VIRTUAL_ENV/bin/
. Você precisa do gancho pós-ativo.
$ 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
Se você deseja manter essa configuração no diretório do projeto, basta criar um link simbólico do diretório do projeto para $VIRTUAL_ENV/bin/postactivate
.
$ rm $VIRTUAL_ENV/bin/postactivate
$ ln -s .env/postactivate $VIRTUAL_ENV/bin/postactivate
Você pode até automatizar a criação dos links simbólicos toda vez que usar mkvirtualenv .
Limpando e desativando
Lembre-se de que isso não será limpo depois de si. Quando você desativa o virtualenv, a variável de ambiente persiste. Para limpar simetricamente, você pode adicionar a $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
Lembre-se de que, se estiver usando isso para variáveis de ambiente que já podem estar configuradas em seu ambiente, a desativação resultará na desativação completa da saída da virtualenv. Portanto, se é provável que você possa registrar o valor anterior em algum lugar temporário, leia-o novamente em desativar.
Configuração:
$ 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
Teste:
$ echo $SOME_VAR
banana
$ workon myenv
$ echo $SOME_VAR
apple
$ deactivate
$ echo $SOME_VAR
banana