El uso de la deactivatefunción proporcionada por el script de venv activaterequiere que confíe en que la función de desactivación esté codificada correctamente para restablecer limpiamente todas las variables de entorno a su estado anterior, teniendo en cuenta no solo la activación original , sino también cualquier interruptor , configuración o otro trabajo puedas haber hecho mientras tanto.
Probablemente esté bien, pero introduce un nuevo riesgo distinto de cero de dejar su entorno modificado después.
Sin embargo, técnicamente no es posible que un proceso altere directamente las variables de entorno de su padre, por lo que podemos usar un sub-shell separado para estar absolutamente seguros de que nuestros venvs no dejan ningún cambio residual:
Activar:
$ bash --init-file PythonVenv/bin/activate
- Esto inicia un nuevo shell alrededor del
venv. Su bashcaparazón original permanece sin modificaciones.
Para desactivar:
$ exitO [CTRL]+[D]
- Esto sale de todo el shell en el que se
venvencuentra y lo regresa al shell original antes de que el script de activación realizara cambios en el entorno.
Ejemplo:
[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!