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

时间:2016-02-18 23:21:16

标签: python windows operating-system anaconda

screenshot

这种行为是如何解释的?

import os
print os.environ.keys()

列出其密钥中的PATH

import os
print os.environ["PATH"]

给出错误:

NameError: name 'PATH' is not defined

此外,上面的代码在python环境中编写后工作正常。

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

操作系统是Windows Server 2008

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:2)

你遇到的问题是你在{"导入..."

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

这不是Python问题,它是一个shell问题(在本例中是来自Windows的CMD.exe)。 "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指出的那样,你可以通过"逃避"来解决这个问题。您使用的报价,或转换报价的风格:

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

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

答案 2 :(得分:1)

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