首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >python sys.path的故障排除

python sys.path的故障排除
EN

Stack Overflow用户
提问于 2011-03-31 13:36:03
回答 1查看 1.6K关注 0票数 13

http://docs.python.org/library/sys.html的蟒蛇说sys.path是..。

从环境变量PYTHONPATH初始化,加上依赖安装的默认设置。

我在我的sys.path中找到了一个导致问题的路径项,并且在跟踪它时遇到了很多困难。我在谷歌上所能看到的就是解释如何向PYTHONPATH变量添加条目的人。

我的问题是:是否有任何工具可以帮助跟踪为什么某个特定项目在您的sys.path上?如何才能找到更多关于“安装相关的默认设置”的信息?

到目前为止,我已经找到了一个部分解决方案,就是对python本身使用strace并查找.pth文件。我还找到了一个sys.path_importer_cache,它可能适用也可能不适用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-31 14:28:59

最近,我在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/PythonPathhttp://svn.python.org/projects/python/trunk/PC/getpathp.c源代码注释中的更多细节(在我找到上面的链接之前,这些条目对我来说是最难理解的)。
  • 接下来,正如site包文档(链接)中所解释的,sys.path是由sys.prefixsys.exec_prefix构建的。在我的电脑上,它们都指向C:\Python27。默认情况下,它以任何方式搜索lib/site-packages。现在,条目C:\Python27; C:\Python27\lib\site-packages被附加到上面的列表中。
  • 接下来,它按字母顺序搜索每个.pth文件。我的网站里有easy_install.pthpywin32.pthsetuptools.pth -包。这就是事情开始变得奇怪的地方。如果.pth文件中的条目只是目录位置,那就很简单了。它们将被逐行附加到sys.path。但是,easy_install.pth有一些python代码,这会导致easy_install.pth中列出的条目在sys.path列表的开头添加包列表。
  • 在此之后,pywin32.pth中的目录条目将按预期的方式添加到sys.path列表的末尾。

注意:虽然上面的讨论涉及到Windows,但即使是在Mac等上也是类似的。在Mac上,它只是在开始查看site-packages目录中的.pth文件之前添加了不同的操作系统默认值,比如.pth等等。

在您的示例中,您可以首先启动python,检查sys.prefixsys.exec_prefix指向的位置,然后从那里钻取。

注2:如果您使用的是一个IDE,比如Aptana/PyDev,它会添加更多的配置。所以你得小心点。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5500736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档