导入非内置模块时,解释器会在 sys.path
给定的位置进行搜索。 sys.path
从这些位置 (http://docs.python.org/library/sys.html#sys.path) 初始化:
- 包含输入脚本的目录(或当前目录)
- Python路径
- 依赖于安装的默认值
虽然前两个来源是直截了当的,但谁能解释第三个来源的工作原理,以及影响它的可能性有哪些?
虽然我会对通用解决方案感兴趣,但我的具体问题是:
- 我已经安装了 Enthought distribution 7.2 32-bit , 然后 Scipy-Superpack .现在 enthought python 尝试从
/Library/Python/2.7/
导入 numpy,这是 superpack 安装它们的地方,而不是从 enthought 站点包。 - 使用
py2app
-A
创建的wxPython
应用程序没有与启动时相同的sys.path
使用python start_app.py
的应用程序。
最佳答案
第三源的基础是在编译时(或更准确地说是配置时)设置的,具体取决于平台。然后它会在运行时通过 .pth
文件等扩展和添加(一旦 Python 可执行文件被编译以影响第三个源,您就可以这样做)。
Python 文档的这一页包含有关 .pth
文件如何工作的所有信息,以及有关如何从构建时设置构造 sys.path
的更多信息等http://docs.python.org/library/site.html
虽然您可以影响整个 sys.path
,但我不确定您为什么要特别影响第三个来源。总之,影响 sys.path
的三种方式(无需重新编译 Python 或修补源代码)是:
- 通过 PYTHONPATH 环境变量。
- 通过创建
.pth
文件并将它们放在 Python 扫描包的位置。 (有关详细信息,请参阅前面的链接。) 以编程方式,通过导入
sys
然后附加或添加到sys.path
import sys sys.path.insert(0, '/this/path/will/be/considered/first')
希望这三种方式中的一种能帮助您做您想做的事。
关于python - 如何在 Mac OS X 上确定 python 模块搜索路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10955024/