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

python中os.putenv(key,value)和os.environ[key]=value之间有什么区别?,python,operating-system,Python,Operating System,我需要构建一个系统环境变量,我使用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。如果您阅读,您将得到os.p

我需要构建一个系统环境变量,我使用
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。

如果您阅读,您将得到os.putenv不工作的原因的答案:

此映射在第一次导入操作系统模块时捕获,通常在 Python启动作为processing site.py的一部分。之后对环境所做的更改 这一次不会反映在os.environ中,但通过修改 操作系统环境直接

如果平台支持putenv()函数,则此映射可用于修改 环境以及查询环境。将自动调用putenv() 当映射被修改时

注意:直接调用putenv()不会改变os.environ,因此最好修改 环境操作系统


好的,我使用os.environ[key]=value在Pythonshell中成功地构建了一个系统环境变量。但是如果我关闭python shell,为什么系统环境变量不存在呢?我知道系统环境变量只存在于当前的python shell中,如果我想在windows操作系统中保存系统环境变量,我必须导入_winreg模块来构建系统环境变量。顺便说一句,非常感谢您耐心的解释:DIt是在函数完成时恢复环境变量的良好实践。您可能需要使用本文中描述的
modified_environ
上下文管理器之类的工具来恢复环境变量。