Использование deactivate
функции, предоставляемой сценарием venv, activate
требует от вас правильного кодирования функции деактивации для точного сброса всех переменных среды обратно в прежнее состояние, принимая во внимание не только исходную активацию , но также любые переключатели , конфигурацию или другие работа, которую вы, возможно, сделали за это время.
Это, вероятно, хорошо, но это вносит новый ненулевой риск оставить вашу среду измененной впоследствии.
Однако технически невозможно, чтобы процесс напрямую изменил переменные окружения своего родителя, поэтому мы можем использовать отдельную вложенную оболочку, чтобы быть абсолютно уверенными, что наши venv
s не оставляют никаких остаточных изменений:
Активировать:
$ bash --init-file PythonVenv/bin/activate
- Это начинает новую оболочку вокруг
venv
. Ваша оригинальная bash
оболочка остается неизменной.
Чтобы деактивировать:
$ exit
ИЛИ [CTRL]
+[D]
- Это завершает работу всей оболочки
venv
и возвращает вас к исходной оболочке до того, как скрипт активации внесет какие-либо изменения в среду.
Пример:
[user@computer ~]$ echo $VIRTUAL_ENV
No virtualenv!
[user@computer ~]$ bash --init-file PythonVenv/bin/activate
(PythonVenv) [user@computer ~]$ echo $VIRTUAL_ENV
/home/user/PythonVenv
(PythonVenv) [user@computer ~]$ exit
exit
[user@computer ~]$ echo $VIRTUAL_ENV
No virtualenv!