我对用于构建Python sys.path
的规则感到困惑。我理解fist entry will be“包含用于调用Python解释器的脚本的目录”,或者如果交互式调用Python则为空字符串,并且最后的entires将是基于Python安装的条目。但我对这两组条目之间的情况感到困惑,特别是它们与我的PYTHONPATH有何关系。
当我(A)执行一个脚本,在sys.path
目录中的系统命令提示符处使用python test.py
打印出../scriptpath
的条目时,我得到:
/Users/Rax/Documents/Projects/scriptpath
... (my system PYTHONPATH, as configured in .bash_profile) #(i)
/Users/Rax/Documents/Projects/scriptpath
... (system entries)
这与(B)在IPython shell中的import test
中运行../scriptpath
时得到的不一样
(empty string)
/usr/local/bin
... (my system PYTHONPATH) #(i)
/Users/Rax/Documents/Projects/scriptpath
... (system entries)
/Library/Python/2.7/site-packages/IPython/extensions
或(C)在Python shell中
(empty string)
... (my system PYTHONPATH) #(i)
/Users/Rax/Documents/Projects/scriptpath
... (system entries)
while,(D)当我在IDE(PyCharm)中运行test.py
时,我得到了
/Users/Rax/Documents/Projects/scriptpath
... (user-added entries in the PyCharm Interpreter Paths settings) #(i)
... (system entries)
或(E)
/Users/Rax/Documents/Projects/scriptpath
... (user-added entries in the PyCharm Interpreter Paths settings) #(i)
/Users/Rax/Documents/Projects/scriptpath
... (system entries)
取决于我是否可以选择是否启用“内容根目录”。
I think I understand其中(i)条目来自每种情况:所有都使用我的系统PYTHONPATH,但PyCharm除外,它使用“解释器设置”中“路径”末尾的“用户添加”路径“;但是我不明白其他的东西来自哪里(或者就此而言,PyCharm如何能够忽略我的系统PYTHONPATH)。
为什么.. scriptpath
条目有时会在(i)之前和之后重复?使用了哪些规则来添加其他条目(例如{B}中的/usr/local/bin
?