在Python中,os.putenv(key, value)和os.environ[key]=value有什么区别?

5
我需要建立一个系统环境变量,我使用 os.putenv(key, value) 建立一个,然后使用 print os.getenv(key),控制台输出 None
但是当我使用 os.environ[key] = value 建立它时,控制台会输出值(这里是 print os.getenv(key) 或者 print os.environ[key])。
然而,如果运行 print os.environ,那么键和值就不在字典中。
为什么我无法成功创建系统环境变量? 我使用的是 Windows 7 和 Python 2.7.5。

在函数完成时恢复环境变量是一个好的实践。您可能需要像这个问题中描述的modified_environ上下文管理器来恢复环境变量。 - Laurent LAPORTE
1个回答

3
如果你阅读文档,你会了解到为什么 os.putenv 不起作用的答案:
这个映射是在 os 模块第一次导入时捕获的,通常在 Python 启动时作为处理 site.py 的一部分。此后对环境所做的更改不会反映在 os.environ 中,除非通过修改 os.environ 直接进行更改。
如果平台支持 putenv() 函数,则可以使用该映射修改环境以及查询环境。当修改映射时,putenv() 将自动调用。
注意:直接调用 putenv() 不会更改 os.environ,因此最好修改 os.environ。

好的,我使用 os.environ[key]=value 成功在 Python shell 中构建了一个系统环境变量。但是,为什么如果我关闭 Python shell ,该系统环境变量不存在? - Aurora Wu
我知道系统环境变量只存在于当前的Python shell中,如果我想要系统环境变量保存在Windows操作系统中,我必须导入_winreg模块来构建系统环境变量。顺便说一下,非常感谢您耐心的解释。 :D - Aurora Wu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接