【问题标题】:How to read Windows environment variable value?如何读取 Windows 环境变量值?
【发布时间】:2012-05-16 19:50:23
【问题描述】:

我试过了:

os.environ['MyVar']

但它没有用! 有没有适合所有操作系统的方法?

【问题讨论】:

  • 我收到了这个错误:KeyError: 'MyVar'
  • 你确定你以正确的方式定义了变量吗?
  • 如何定义?我已将其添加到控制面板->系统和安全->系统->高级系统设置->环境变量
  • 您可以在控制台中使用命令SET查看变量。
  • 在启动运行 Python 的 shell 后是否设置了环境变量?

标签: python environment-variables


【解决方案1】:

尝试使用以下方法:

os.getenv('MyVar')

来自documentation

os.getenv(varname[, value])

如果存在则返回环境变量 varname 的值,如果不存在则返回值。值默认为无。

可用性:大多数版本的 Unix、Windows

所以在测试之后:

>>> import os
>>> os.environ['MyVar'] = 'Hello World!'       # set the environment variable 'MyVar' to contain 'Hello World!'
>>> print os.getenv('MyVar')
Hello World!
>>> print os.getenv('not_existing_variable')
None
>>> print os.getenv('not_existing_variable', 'that variable does not exist')
that variable does not exist
>>> print os.environ['MyVar']
Hello World!
>>> print os.environ['not_existing_variable']
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "/usr/lib/python2.4/UserDict.py", line 17, in __getitem__
    def __getitem__(self, key): return self.data[key]
KeyError: 'not_existing_variable    

如果环境变量存在,您的方法也可以工作。使用os.getenv的区别在于它返回None(或给定值),而os.environ['MyValue']在变量不存在时会抛出KeyError异常。

【讨论】:

  • 无论组合是什么,默认情况下都打印出无。
【解决方案2】:

您可能需要重新启动 Windows 才能读取您通过控制面板设置的环境变量。

【讨论】:

  • 或者只是重新启动控制台。
  • 这成功了!我尝试重新启动 Spyder 和 Jupyter Notebook,但都找不到我需要的环境变量。重新启动计算机后, os.getenv(wanted_env_var) 功能完美运行。谢谢!
  • 不得不重新启动机器,重新启动控制台并没有切断它+1
【解决方案3】:
os.getenv('PATH')

您可以使用上面的代码行进行测试。它将列出所有设置的路径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-18
    • 1970-01-01
    • 2012-08-11
    • 2018-07-01
    • 2017-09-04
    • 2015-03-27
    • 2018-01-09
    相关资源
    最近更新 更多