¿Cuál es la forma correcta de desarmar una variable de entorno de Linux en Python?


85

De la documentación:

Si la plataforma admite la unsetenv()función, puede eliminar elementos en esta asignación para desarmar las variables de entorno. unsetenv()se llamará automáticamente cuando se elimine un elemento de os.environ y cuando se llame a uno de los métodos pop()o clear().

Sin embargo, quiero algo que funcione independientemente de la disponibilidad de unsetenv(). ¿Cómo elimino elementos del mapeo si no está disponible? os.environ['MYVAR'] = None?


1
unsetenvfunciona en "la mayoría de versiones de Unix, Windows" de acuerdo con los documentos.
Katriel

hmmm, no estaba seguro. Estoy en una plataforma donde $ unset MYVARfuncionan los comandos
fredley

Respuestas:


139

Sólo

del os.environ['MYVAR']

Deberia trabajar.


1
La cuestión era eliminar elementos del mapeo, después de todo. Si unsetenv no es compatible, entonces la clave y el valor se eliminan del mapeo pero permanecen configurados en el entorno, ¿neh?
Vinay Sajip

1
Si la clave no existe, creo que obtienes un KeyError.
rickfoosusa

5
para el registro del os.environfuncionó cuando os.unsetenvno lo hizo en OSX.
jeremyjjbrown

1
Los documentos en del: docs.python.org/2/tutorial/…
Marty Chang

Para su información, esta solución no es idempotente. es decir, si MYVARno existe en el entorno, obtendrá una excepción. Puedes envolverlo en un try:pero es desafortunado.
medley56

9

Aún puede eliminar elementos del mapeo , pero realmente no eliminará la variable del entorno si unsetenv()no está disponible.

del os.environ['MYVAR']
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.