python sys.path故障排除

Mu *_*ind 13 python path

http://docs.python.org/library/sys.html上的python文档说sys.path是......

从环境变量PYTHONPATH初始化,加上依赖于安装的默认值.

我在我的路径项中发现了sys.path导致问题的路径项,并且在跟踪它时遇到了很多麻烦.我可以在Google上看到的是人们解释如何向变量添加项目PYTHONPATH.

我的问题是:是否有任何工具可以帮助追踪特定物品的原因sys.path?如何找到有关"依赖于安装的默认值"的更多信息?

到目前为止,我发现部分答案是strace在python本身使用并查找.pth文件.我也发现了一个sys.path_importer_cache,可能适用也可能不适用.

Pra*_*ota 5

我最近遇到了一些问题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上,它只是darwin在开始查看文件site-packages目录之前添加了不同的操作系统默认值等.pth.

在您的情况下,您可以从启动python shell并检查位置sys.prefixsys.exec_prefix指向,然后从那里向下钻取开始.

注意2:如果您使用的是诸如Aptana/PyDev之类的IDE,它将添加更多自己的配置.所以你需要警惕.