python sys.path 故障排除

2024-05-23

python 文档位于http://docs.python.org/library/sys.html http://docs.python.org/library/sys.html比如说sys.path is...

从环境变量 PYTHONPATH 以及依赖于安装的默认值初始化。

我在我的路径中找到了一个路径项sys.path这导致了问题,并且在追踪它时遇到了很多困难。我在谷歌上能找到的只是人们解释如何add项目到PYTHONPATH多变的。

我的问题是:有没有什么工具可以帮助追踪why您的某个特定项目sys.path?如何找到有关“依赖于安装的默认值”的更多信息?

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


我最近遇到了一些问题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 http://svn.python.org/projects/python/trunk/PC/getpathp.c(在我找到上面的链接之前,这些条目对我来说是最难理解的)。

  • 接下来,正如中所解释的site包文档(link http://docs.python.org/library/site.html), sys.path是由sys.prefix and sys.exec_prefix。在我的电脑上它们都指向C:\Python27。默认情况下它会搜索lib/site-packages无论如何。所以现在的条目C:\Python27; C:\Python27\lib\site-packages已附加到上面的列表中。

  • 接下来它会搜索每个.pth文件按字母顺序排列。我有easy_install.pth, pywin32.pth and setuptools.pth在我的网站包中。这就是事情开始变得奇怪的地方。如果条目中的条目很简单.pth文件只是目录位置。他们只会被附加到sys.path逐行。然而easy_install.pth有一些 python 代码会导致列出的条目easy_install.pth添加软件包列表开始 of the sys.path list.

  • 此后的目录条目pywin32.pth, setuptools.pth添加在末尾sys.path按预期列出。

注意:虽然上述讨论适用于 Windows,但即使在 Mac 等上也是类似的。在 Mac 上,它只是添加了不同的操作系统默认值,例如darwin等在它开始查看之前site-packages目录.pth files.

对于您的情况,您可以首先启动 python shell 并检查位置sys.prefix and sys.exec_prefix指向然后从那里向下钻取。

注 2:如果您使用 Aptana/PyDev 等 IDE,它将添加更多自己的配置。所以你需要对此保持警惕。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python sys.path 故障排除 的相关文章

随机推荐