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

fre*_*ley 59 python environment-variables

从文档:

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

但是我想要的东西无论有多少都可以使用unsetenv().如果项目不可用,如何从映射中删除项目?os.environ['MYVAR'] = None

Vin*_*jip 94

只是

del os.environ['MYVAR']
Run Code Online (Sandbox Code Playgroud)

应该管用.

  • 记录`del os.environ`适用于`os.unsetenv`没有在OSX上. (3认同)
  • 仅供参考,此解决方案不是幂等的。即如果环境中不存在“MYVAR”,您将收到异常。您可以将其包装在“try:”中,但这很不幸。 (3认同)
  • 如果密钥不存在,我认为您会收到 KeyError。 (2认同)

Fom*_*aut 49

对于那些寻找一种优雅的方法来取消设置环境变量而不会在变量不存在时出错的人:

os.environ.pop('MYVAR', None)
Run Code Online (Sandbox Code Playgroud)

其工作原理完全相同:

if 'MYVAR' in os.environ:
    del os.environ['MYVAR']
Run Code Online (Sandbox Code Playgroud)

但如果您需要处理异常,请按照其他用户的建议进行操作:del os.environ['MYVAR']os.environ.pop('MYVAR')


Sjo*_*erd 6

您仍然可以从映射中删除项目,但如果unsetenv()不可用,它将不会真正从环境中删除该变量.

del os.environ['MYVAR']
Run Code Online (Sandbox Code Playgroud)