在Windows中如何设置Python2的sys.path?

k10*_*107 4 python windows path pythonpath

Python文档说,sys.path就是"从环境变量初始化PYTHONPATH,再加上安装相关的默认."

但究竟适用于Windows的"依赖于安装的默认值"是什么?

(我知道这可能取决于如何编译python,但如果我只有二进制文件,有没有办法弄清楚默认sys.path是如何构造的?)

澄清:我不是在问"我的是什么sys.path?".我想知道"Python如何构建sys.path?" 文档说,它sys.pathsys.path[0]作为脚本的当前目录构建的,加上Python在PYTHONPATH环境变量中找到的内容,以及一些依赖于安装的voodoo.那神秘的伏都教部分是什么?

k10*_*107 6

好像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.pthsetuptools.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.