k10*_*107 4 python windows path pythonpath
在Python文档说,sys.path
就是"从环境变量初始化PYTHONPATH
,再加上安装相关的默认."
但究竟适用于Windows的"依赖于安装的默认值"是什么?
(我知道这可能取决于如何编译python,但如果我只有二进制文件,有没有办法弄清楚默认sys.path
是如何构造的?)
澄清:我不是在问"我的是什么sys.path
?".我想知道"Python如何构建sys.path?" 文档说,它sys.path
是sys.path[0]
作为脚本的当前目录构建的,加上Python在PYTHONPATH
环境变量中找到的内容,以及一些依赖于安装的voodoo.那神秘的伏都教部分是什么?
好像Praveen Gollakota在故障排除python sys.path上有很好的信息(在这里重新播放:)
第一个添加C:\ WINNT\system32\python27.zip(PEP273中的更多细节).
接下来添加的是来自Windows注册表中的条目.条目C:\Python27\DLLs;C:\Python27\lib; C:\Python27\lib\plat-win; C:\Python27\lib\lib-tk
来自HOT_KEY_LOCAL_USER/Python/PythonCore/2.7/PythonPath
注册表.有关Python源代码注释的更多详细信息,请访问http://svn.python.org/projects/python/trunk/PC/getpathp.c(这些条目对我来说是最难理解的,直到我找到上面的链接).
接下来,如site
包文档中所述,sys.path
是从sys.prefix
和构建的sys.exec_prefix
.在我的电脑上,他们都指向C:\Python27
.并且默认情况下它会搜索lib/site-packages
.所以现在条目C:\Python27; C:\Python27\lib\site-packages
被附加到上面的列表中.
接下来,它.pth
按字母顺序搜索每个文件.我有easy_install.pth
,pywin32.pth
并setuptools.pth
在我的网站,包.事情开始变得怪异.如果.pth
文件中的条目只是目录位置,那将是直截了当的.他们只会sys.path
逐行追加.但是easy_install.pth
有一些python代码导致列出的条目在easy_install.pth
列表的开头添加包sys.path
列表.
在此之后的目录项中pywin32.pth
,setuptools.pth
都在末尾添加sys.path
列表预期.
注意:虽然上面的讨论属于Windows,但它在Mac上也是类似的.在Mac上它只是在开始查看文件site-packages
目录之前添加了不同的操作系统默认值,如darwin等.pth
.