PATH 不是公认的环境变量,但显然存在

PATH not a recognised environ variable but clearly exists

如何解释这种行为?

import os
print os.environ.keys()

在其键中列出了 PATH,但是:

import os
print os.environ["PATH"]

报错:

NameError: name 'PATH' is not defined

此外,上面的代码一旦在 python 环境中编写就可以正常工作。

如上所示,我已经为用户和系统(通过控制面板)定义了一个 PATH 环境变量。

OS 是 Windows Server 2008

我认为您正在尝试将 Path 作为列表元素传递给 environ.But,因为 environ 是 class,正如您在 print os.environ.keys() 中所做的那样,它具有成员函数而不是列出。 希望这有帮助。

这是因为您在引号内使用了引号。

您可以将其转义或替换为分号。

$ python -c "import os; print os.environ['PATH']"
/Library/Frameworks/Python.framework/Versions/3.5/bin:/Users/[...]

您遇到的问题是您在已经被 "import ... "

包围的行中打印 ["PATH"]

这不是 Python 问题,而是 shell 问题(在本例中,CMD.exe 来自 windows)。 "import 双引号开始一个字符串。字符串继续,直到它看到双引号 - 就在 PATH 之前。所以你结束了

  quoted string: import os; print os.environ[
unquoted string: PATH
  quoted string: ]

所有这些都粘在一起产生:

import os; print os.environ[PATH]      

注意,PATH 周围没有引号? Python 看到了,并查找未定义的符号 PATH。所以它打印了一个错误。

正如@Tomasz Kajtoch 指出的那样,您可以通过 "escaping" 您使用的引号或切换引号的风格来解决此问题:

python -c "import os; print os.environ[\"PATH\"]"

python -c "import os; print os.eniron['PATH']"