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

chr*_*eck 7 python macos pythonpath sys.path

当导入非内置模块时,解释器将搜索给定的位置sys.path.sys.path从这些位置初始化(http://docs.python.org/library/sys.html#sys.path):

  1. 包含输入脚本(或当前目录)的目录
  2. PYTHONPATH
  3. 依赖于安装的默认值

虽然前两个来源是直截了当的,但任何人都可以解释第三个如何运作,以及影响它的可能性有多大?

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

  • 我已经安装了32位Enthought分发版,然后是Scipy-Superpack.现在,兴奋的python试图导入numpy /Library/Python/2.7/,这是superpack安装它们的地方,而不是来自enthought网站包.
  • 一个wxPython与创建的应用程序py2app -A不具有相同的sys.path开始与应用程序时为python start_app.py.

Chr*_*don 3

第三个源的基础是在编译时(或更准确地说是配置时)设置的,具体取决于平台。然后在运行时通过.pth文件等对其进行扩展和添加(一旦 Python 可执行文件被编译以影响第三个源,您就可以执行此操作)。

Python 文档的此页面包含有关文件如何工作的所有信息.pth,以及有关如何sys.path从构建时设置构建等的更多信息。 http://docs.python.org/library/site.html

我不确定为什么当你可以影响整个sys.path. 无论如何,影响的三种方式sys.path(无需重新编译 Python 或修补源代码)是:

  1. 通过 PYTHONPATH 环境变量。
  2. 通过创建.pth文件并将它们放在 Python 扫描包的位置。(有关详细信息,请参阅前面的链接。)
  3. 以编程方式,通过导入sys然后附加或添加到sys.path

    import sys
    sys.path.insert(0, '/this/path/will/be/considered/first')
    
    Run Code Online (Sandbox Code Playgroud)

希望这三种方法之一可以帮助您做您想做的事。