【问题标题】:What are the differences between os.putenv(key, value) and os.environ[key]=value in python?python中的os.putenv(key, value)和os.environ[key]=value有什么区别?
【发布时间】:2013-06-24 09:31:23
【问题描述】:

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

【问题讨论】:

  • 在函数完成时恢复环境变量是一个好习惯。您可能需要类似 question 中描述的 modified_environ 上下文管理器来恢复环境变量。

标签: python operating-system


【解决方案1】:

如果您阅读the documentation,您将得到为什么 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,为什么系统环境变量不存在?
  • 我知道系统环境变量只存在于当前的python shell中,如果我想让系统环境变量保存在windows操作系统中,我必须导入_winreg模块来构建系统环境变量。顺便说一句,非常感谢您耐心的解释。 :D
猜你喜欢
  • 2012-04-18
  • 2015-10-12
  • 2012-01-25
  • 2013-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-16
  • 1970-01-01
相关资源
最近更新 更多