Virtualenvwrapper kullanıyorsanız (kesinlikle tavsiye ederim), aynı adlara sahip komut dosyalarını kullanarak farklı kancalar (önceden etkinleştirin, postactivate, predeactivate, postdeactivate) tanımlayabilirsiniz $VIRTUAL_ENV/bin/
. Postactivate kancaya ihtiyacınız var.
$ 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
Bu yapılandırmayı proje dizininizde tutmak istiyorsanız, proje dizininizden $VIRTUAL_ENV/bin/postactivate
.
$ rm $VIRTUAL_ENV/bin/postactivate
$ ln -s .env/postactivate $VIRTUAL_ENV/bin/postactivate
Hatta olabilir sembolik oluşturulmasını otomatikleştirmek kullandığınız her zaman mkvirtualenv .
Devre dışı bırakıldığında temizleme
Bunun kendiliğinden temizlenmeyeceğini unutmayın. Virtualenv'i devre dışı bıraktığınızda, ortam değişkeni devam eder. Simetrik olarak temizlemek için$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
Bunu ortamınızda önceden ayarlanmış olabilecek ortam değişkenleri için kullanırsanız, ayarın, sanal ağdan ayrılırken tamamen ayarlanmamasına neden olacağını unutmayın. Eğer bu olası ise, önceki değeri geçici bir yere kaydedebilirsiniz, sonra devre dışı bırakıldığında tekrar okuyun.
Kurmak:
$ 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
Ölçek:
$ echo $SOME_VAR
banana
$ workon myenv
$ echo $SOME_VAR
apple
$ deactivate
$ echo $SOME_VAR
banana