Как правильно отключить переменную среды Linux в Python?


85

Из документации:

Если платформа поддерживает эту unsetenv()функцию, вы можете удалить элементы в этом сопоставлении, чтобы сбросить переменные среды. unsetenv()будет вызываться автоматически при удалении элемента из os.environ и при вызове одного из методов pop()или clear().

Однако я хочу что-то, что будет работать независимо от наличия unsetenv(). Как удалить элементы из сопоставления, если оно недоступно? os.environ['MYVAR'] = None?


1
unsetenvсогласно документации, работает на "большинстве разновидностей Unix, Windows".
Katriel

хммм, я не был уверен. Я на платформе, где $ unset MYVARработают команды
Фредли

Ответы:


139

Просто

del os.environ['MYVAR']

должно сработать.


1
В конце концов, вопрос заключался в удалении элементов из сопоставления. Если unsetenv не поддерживается, то ключ и значение удаляются из сопоставления, но остаются установленными в среде, не так ли?
Винай Саджип,

1
Если ключ не существует, я думаю, вы получите KeyError.
rickfoosusa

5
для записи del os.environработал, когда os.unsetenvне работал на OSX.
jeremyjjbrown

1
Документация на del: docs.python.org/2/tutorial/…
Марти Чанг,

К вашему сведению, это решение не идемпотентно. т.е. если MYVARне существует в среде, вы получите исключение. Вы можете обернуть его в, try:но это неудачно.
medley56

9

Вы по-прежнему можете удалять элементы из сопоставления , но это не приведет к удалению переменной из среды, если unsetenv()она недоступна.

del os.environ['MYVAR']
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.