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?


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ć.


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


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']
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.