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

标签 python macos pythonpath sys.path

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

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

虽然前两个来源是直截了当的,但谁能解释第三个来源的工作原理,以及影响它的可能性有哪些?

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

  • 我已经安装了 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 或修补源代码)是:

  1. 通过 PYTHONPATH 环境变量。
  2. 通过创建 .pth 文件并将它们放在 Python 扫描包的位置。 (有关详细信息,请参阅前面的链接。)
  3. 以编程方式,通过导入 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/

相关文章:

python - 求 pandas 中某些列的总和

macos - 如何在基于 View 的 NSOutlineView 中自定义显示单元

python - 在导入语句之前设置 pythonpath

python - 找不到我的模块

python - Dataframe 中的转换矩阵未传递值

python - 记录多线程应用程序中的锁获取和释放调用

python - Django 长请求超时

arrays - 无法更改 Document 类中标签的 stringValue(基于文档的应用程序,Mac)

c# - 在 Visual Studio 中设置 TableView 时出现公共(public)列表错误

python - 与 python 无关的应用程序输出奇怪的错误消息 : SyntaxError: invalid syntax