Якщо ви використовуєте virtualenvwrapper (настійно рекомендую це робити), ви можете визначити різні гачки (попередньо активувати, поставити активацію, попередньо активізувати, післязаключити), використовуючи сценарії з однаковими назвами в $VIRTUAL_ENV/bin/
. Вам потрібен гачок для поштовху.
$ 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
Якщо ви хочете зберегти цю конфігурацію у своєму каталозі проектів, просто створіть символьне посилання зі свого каталогу проектів до $VIRTUAL_ENV/bin/postactivate
.
$ rm $VIRTUAL_ENV/bin/postactivate
$ ln -s .env/postactivate $VIRTUAL_ENV/bin/postactivate
Ви навіть можете автоматизувати створення символьних посилань кожного разу, коли використовуєте mkvirtualenv .
Прибирання при відключенні
Пам’ятайте, що це звикання не буде після себе. При відключенні virtualenv змінна середовища збережеться. Для очищення симетрично можна додати $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
Пам'ятайте, що якщо використовувати це для змінних оточуючих середовищ, які вже можуть бути встановлені у вашому оточенні, тоді невстановлення призведе до того, що вони залишаться повністю вимкненими після виходу з virtualenv. Тож якщо це взагалі ймовірно, ви можете записати попереднє значення десь тимчасово, тоді прочитайте його знову при відключенні.
Налаштування:
$ 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
Тест:
$ echo $SOME_VAR
banana
$ workon myenv
$ echo $SOME_VAR
apple
$ deactivate
$ echo $SOME_VAR
banana