Jaki jest prawidłowy sposób usunięcia zmiennej środowiskowej Linuksa w Pythonie?

85

Z dokumentacji:

Jeśli platforma obsługuje tę unsetenv()funkcję, możesz usunąć elementy w tym mapowaniu na nieskonfigurowane zmienne środowiskowe. unsetenv()zostanie wywołana automatycznie po usunięciu elementu z os.environ i wywołaniu jednej z metod pop()lub clear().

Jednak chcę czegoś, co zadziała niezależnie od dostępności unsetenv(). Jak usunąć elementy z mapowania, jeśli nie jest dostępne? os.environ['MYVAR'] = None?

fredley
źródło
1
unsetenvdziała na „większości wersji Unix, Windows” zgodnie z dokumentacją.
Katriel
hmmm, nie byłem pewien. Jestem na platformie, na której $ unset MYVARdziałają polecenia
fredley

Odpowiedzi:

139

Właśnie

del os.environ['MYVAR']

powinno działać.

Vinay Sajip
źródło
1
W końcu chodziło o usunięcie elementów z mapowania. Jeśli unsetenv nie jest obsługiwane, klucz i wartość są usuwane z mapowania, ale pozostają ustawione w środowisku, neh?
Vinay Sajip
1
Jeśli klucz nie istnieje, myślę, że otrzymasz KeyError.
rickfoosusa
5
dla rekordu del os.environpracował, kiedy os.unsetenvnie na OSX.
jeremyjjbrown
1
Dokumentacja na del: docs.python.org/2/tutorial/ ...
Marty Chang
FYI to rozwiązanie nie jest idempotentne. tzn. jeśli MYVARnie istnieje w środowisku, otrzymasz wyjątek. Możesz go owinąć, try:ale to niefortunne.
medley56
9

Nadal możesz usuwać elementy z mapowania , ale tak naprawdę nie usunie to zmiennej ze środowiska, jeśli unsetenv()nie jest dostępna.

del os.environ['MYVAR']
Sjoerd
źródło