Jika Anda menggunakan virtualenvwrapper (saya sangat merekomendasikan melakukannya), Anda dapat menentukan kait yang berbeda (preactivate, postactivate, predeactivate, postdeactivate) menggunakan skrip dengan nama yang sama di $VIRTUAL_ENV/bin/
. Anda memerlukan pengait postaktivasi.
$ 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
Jika Anda ingin menyimpan konfigurasi ini di direktori proyek Anda, cukup buat symlink dari direktori proyek Anda ke $VIRTUAL_ENV/bin/postactivate
.
$ rm $VIRTUAL_ENV/bin/postactivate
$ ln -s .env/postactivate $VIRTUAL_ENV/bin/postactivate
Anda bahkan dapat mengotomatiskan pembuatan symlink setiap kali Anda menggunakan mkvirtualenv .
Membersihkan saat dinonaktifkan
Ingatlah bahwa ini tidak akan bersih setelahnya. Saat Anda menonaktifkan virtualenv, variabel lingkungan akan tetap ada. Untuk membersihkan secara simetris, Anda dapat menambahkan $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
Ingat bahwa jika menggunakan ini untuk variabel lingkungan yang mungkin sudah diatur di lingkungan Anda maka yang tidak disetel akan mengakibatkan mereka benar-benar tidak disetel saat meninggalkan virtualenv. Jadi jika itu kemungkinan Anda bisa mencatat nilai sebelumnya di suatu tempat sementara kemudian membacanya kembali pada nonaktifkan.
Mempersiapkan:
$ 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
Uji:
$ echo $SOME_VAR
banana
$ workon myenv
$ echo $SOME_VAR
apple
$ deactivate
$ echo $SOME_VAR
banana