在Mac OS X上如何确定python模块的搜索路径?

当一个非内置模块被导入时,解释器将在sys.path给出的位置中进行搜索。 sys.path从这些位置初始化(http://docs.python.org/library/sys.html#sys.path):

  • 包含输入脚本(或当前目录)的目录
  • PYTHONPATH
  • 依赖于安装的默认值
  • 虽然前两个来源是直截了当的,任何人都可以解释第三个来源是如何工作的,以及影响它的可能性有多大?

    虽然我会对一般解决方案感兴趣,但我的具体问题是:

  • 我已经安装了Enthought distribution 7.2 32位,然后安装了Scipy-Superpack。 现在热衷于python尝试从/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或修补源代码)是:

  • 通过PYTHONPATH环境变量。
  • 通过创建.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?

    下一篇: Textmate, exclude file (types?) from project search