Використання deactivateфункції, що надається сценарієм venv, activateвимагає довірити правильності кодування функції дезактивації, щоб чітко скинути всі змінні середовища назад до того, як вони були раніше - з урахуванням не тільки оригінальної активації , але й будь-яких комутаторів , конфігурації чи іншого робота, яку ви, можливо, зробили тим часом.
Це, мабуть, добре, але це вводить новий, ненульовий ризик залишати своє оточення зміненим згодом.
Однак технічно неможливо, щоб процес безпосередньо міняв змінні середовища його батьківського змісту, тому ми можемо використовувати окрему підкожу, щоб бути абсолютно впевненим, що наші venvне залишають за собою жодних залишкових змін:
Щоб активувати:
$ 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!