Nel caso in cui utilizzi virtualenvwrapper (consiglio vivamente di farlo), puoi definire diversi hook (preactivate, postactivate, preeactivate, postdeactivate) usando gli script con gli stessi nomi in $VIRTUAL_ENV/bin/
. È necessario il gancio postattivo.
$ 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 si desidera mantenere questa configurazione nella directory del progetto, è sufficiente creare un collegamento simbolico dalla directory del progetto a $VIRTUAL_ENV/bin/postactivate
.
$ rm $VIRTUAL_ENV/bin/postactivate
$ ln -s .env/postactivate $VIRTUAL_ENV/bin/postactivate
Puoi persino automatizzare la creazione dei symlink ogni volta che usi mkvirtualenv .
Pulizia in disattivazione
Ricorda che questo non pulirà dopo se stesso. Quando si disattiva virtualenv, la variabile di ambiente persiste. Per pulire simmetricamente puoi aggiungere 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
Ricorda che se lo usi per le variabili di ambiente che potrebbero essere già state impostate nel tuo ambiente, unset determinerà la loro totale disattivazione all'uscita da virtualenv. Quindi, se è del tutto probabile, è possibile registrare il valore precedente da qualche parte temporaneamente, quindi rileggerlo su Disattiva.
Impostare:
$ 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