Was ist der richtige Weg, um eine Linux-Umgebungsvariable in Python zu deaktivieren?

80

Aus der Dokumentation:

Wenn die Plattform die unsetenv()Funktion unterstützt , können Sie Elemente in dieser Zuordnung zu nicht festgelegten Umgebungsvariablen löschen. unsetenv()wird automatisch aufgerufen, wenn ein Element aus os.environ gelöscht wird und wenn eine der Methoden pop()oder clear()aufgerufen wird.

Ich möchte jedoch etwas, das unabhängig von der Verfügbarkeit von funktioniert unsetenv(). Wie lösche ich Elemente aus der Zuordnung, wenn sie nicht verfügbar sind? os.environ['MYVAR'] = None?

Fredley
quelle
1
unsetenvfunktioniert unter "den meisten Varianten von Unix, Windows" gemäß den Dokumenten.
Katriel
hmmm, ich war mir nicht sicher. Ich bin auf einer Plattform, auf der $ unset MYVARBefehle funktionieren
Fredley

Antworten:

130

Gerade

del os.environ['MYVAR']

sollte arbeiten.

Vinay Sajip
quelle
1
Die Frage war schließlich, Elemente aus dem Mapping zu entfernen. Wenn unsetenv nicht unterstützt wird, werden der Schlüssel und der Wert aus dem Mapping entfernt, bleiben aber in der Umgebung festgelegt, neh?
Vinay Sajip
1
Wenn der Schlüssel nicht existiert, erhalten Sie wahrscheinlich einen KeyError.
Rickfoosusa
5
für die Aufzeichnung del os.environarbeitete für wann os.unsetenvnicht unter OSX.
Jeremyjjbrown
1
Die Dokumente auf del: docs.python.org/2/tutorial/…
Marty Chang
Zu Ihrer Information, diese Lösung ist nicht idempotent. Wenn MYVARin der Umgebung keine vorhanden ist, wird eine Ausnahme angezeigt. Sie können es in ein einwickeln, try:aber es ist unglücklich.
medley56
9

Sie können weiterhin Elemente aus der Zuordnung löschen, die Variable wird jedoch nicht wirklich aus der Umgebung gelöscht, wenn sie unsetenv()nicht verfügbar ist.

del os.environ['MYVAR']
Sjoerd
quelle