在Mac OS X上如何确定python模块的搜索路径?
当一个非内置模块被导入时,解释器将在sys.path
给出的位置中进行搜索。 sys.path
从这些位置初始化(http://docs.python.org/library/sys.html#sys.path):
虽然前两个来源是直截了当的,任何人都可以解释第三个来源是如何工作的,以及影响它的可能性有多大?
虽然我会对一般解决方案感兴趣,但我的具体问题是:
/Library/Python/2.7/
导入numpy,这是superpack安装它们的地方,而不是来自enthought站点包。 py2app
-A
创建的wxPython
应用程序与使用python start_app.py
启动应用程序时没有相同的sys.path
。 第三个源的基础是在编译时(或更准确地说是配置时间)设置的,具体取决于平台。 然后通过.pth
文件等将其扩展并添加到运行时(一旦Python可执行文件编译为影响第三个源文件时,您可以执行此操作)。
Python文档的这一页包含了关于.pth
文件如何工作的所有信息,以及关于如何从构建时设置构建sys.path
更多信息等.pth
。 HTML
我不确定为什么要影响第三个来源,但是可以影响整个sys.path
。 无论如何,影响sys.path
的三种方式(无需重新编译Python或修补源代码)是:
.pth
文件并在Python扫描软件包的位置删除它们。 (详情请参阅前面的链接。) 以编程方式,通过导入sys
然后追加或预先添加到sys.path
import sys
sys.path.insert(0, '/this/path/will/be/considered/first')
希望这三种方式中的一种能够帮助你做你想做的事。
在Mac OS X 10.7.5系统上,我也遇到了Enthought python在/Library/Python/2.7/中寻找模块的问题。 显然,这是由位于/Library/Python/2.7/site-packages中的easy-install.pth文件造成的。 在更改此文件的扩展名后,Enthought python导入了Enthought模块(从/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/site-packages)。
链接地址: http://www.djcxy.com/p/10849.html上一篇: How is the python module search path determined on Mac OS X?