在python中取消设置Linux环境变量的正确方法是什么?


80

从文档中:

如果平台支持该unsetenv()功能,则可以删除此映射中的项目以取消设置环境变量。unsetenv()当从os.environ中删除一个项目,pop()或者clear()调用或方法之一时,将自动调用。

但是,我希望无论是否可用,它都将起作用unsetenv()。如果不可用,如何从映射中删除项目?os.environ['MYVAR'] = None


1
unsetenv根据文档,该软件可在“大多数Unix,Windows操作系统”上运行。
卡特里尔

嗯,我不确定。我在一个可以执行$ unset MYVAR命令的平台上
fredley 2010年

Answers:


130

只是

del os.environ['MYVAR']

应该管用。


1
毕竟,问题是关于从映射中删除项目。如果不支持unsetenv,则将键和值从映射中删除,但仍在环境中设置,对吗?
Vinay Sajip,2010年

1
如果密钥不存在,我认为您会收到一个KeyError。
rickfoosusa 2015年

5
记录del os.environ适用于何时os.unsetenv未在OSX上使用。
jeremyjjbrown


仅供参考,这种解决方案不是幂等的。即如果MYVAR环境中不存在,您将得到一个例外。您可以将其包装在中,try:但这很不幸。
medley56

9

您仍然可以从映射中删除项目,但是如果unsetenv()不可用,它实际上不会从环境中删除变量。

del os.environ['MYVAR']
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.