【问题标题】:Building Python 3 on OS X: [Python/importlib.h] Error 133在 OS X 上构建 Python 3:[Python/importlib.h] 错误 133
【发布时间】:2016-07-04 16:14:35
【问题描述】:

我正在尝试在 OS X El Capitan (10.11.5) 上构建 Python (3.5.2)。但是,当我尝试make 时遇到错误。该错误似乎与_freeze_importlib有关。

/usr/local/src/Python-3.5.2 $ make
if test "no" != "yes"; then \
        ./Programs/_freeze_importlib \
            ./Lib/importlib/_bootstrap.py Python/importlib.h; \
    fi
dyld: lazy symbol binding failed: Symbol not found: _getentropy
  Referenced from: /usr/local/src/Python-3.5.2/./Programs/_freeze_importlib
  Expected in: /usr/lib/libSystem.B.dylib

dyld: Symbol not found: _getentropy
  Referenced from: /usr/local/src/Python-3.5.2/./Programs/_freeze_importlib
  Expected in: /usr/lib/libSystem.B.dylib

/bin/sh: line 1: 56666 Trace/BPT trap: 5       ./Programs/_freeze_importlib ./Lib/importlib/_bootstrap.py Python/importlib.h
make: *** [Python/importlib.h] Error 133
/usr/local/src/Python-3.5.2 $ 

你可以看到我的步骤on GitHub

直到make 失败的完整终端输出在Gist 中。


我完全承认这是一项学术练习,因为 El Capitan 附带 Python 2.7.10,您可以使用官方 OS X 安装程序包或通过 Homebrew 轻松安装 Python 3.5.2。

Using Python on Unix platforms 的文档提供了构建说明。 Using Python on a Macintosh 的文档特别提到要使用 OS X 安装程序包。

不过,应该可以在 Mac 上构建。

运行 Mac OS X 的 Macintosh 上的 Python 原则上与任何其他 Unix 平台上的 Python 非常相似,但还有一些额外的功能,例如 IDE 和包管理器,值得指出。

目前,我并不担心这些附加功能。只是好奇为什么我会收到 make 错误。

【问题讨论】:

  • 考虑到你想自己构建它有点不相关,但brew install python3 对你有帮助吗?
  • 是的,我选择了 Homebrew,但我仍然对构建它感到好奇。
  • --enable-universalsdk 添加到configure 是否可以解决问题?
  • 尝试使用--enable-universalsdk,但弹出相同的错误。
  • 我想知道./configure 选择使用我几天前刚刚安装的 Xcode-beta 进行配置是否重要。

标签: python macos python-3.x osx-elcapitan


【解决方案1】:

固定。

./configure 的输出中,我注意到对/Applications/Xcode-beta.app/Contents/Developer/ 的引用。几天前我安装了 Xcode 8 (beta)。切换回常规命令行工具后(使用 Xcode 7.3.1)

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

make 成功。不完美。

Python build finished successfully!
The necessary bits to build these optional modules were not found:
_dbm                  _gdbm                 _sqlite3           
_ssl                  nis                   ossaudiodev        
spwd                  zlib                                     
To find the necessary bits, look in setup.py in detect_modules() for the module's name.

Failed to build these modules:
_lzma                 _tkinter 

我希望我不需要这些模块。

我已将./configuremake 的完整输出放入此Gist。我没有包含make install 的输出,因为它太长了,而且似乎只重复了make 的警告和错误。

注意事项

  • 我没有使用--enable-framework--enable-universalsdk

【讨论】:

  • 我遇到了类似的错误,可能是出于不同的原因——尽管使用 Xcode 8(在 macOS Sierra 10.12.6 上)。在我的情况下,在 MacPorts 之前放置默认路径(/usr/...)(关于gcc),并在CPython repository 内使用make distclean 进行清理。
【解决方案2】:

我认为更好的解决方案是xcode-select --install

如果你将 Xcode 更新到 8(beta),你必须再次运行 xcode-select --install 来安装所有的构建工具。

我遇到了和你一样的问题,在运行xcode-select --install 之后,我可以通过 brew 和 Xcode8 成功安装 python。

我希望它可以帮助其他有同样问题的人。

【讨论】:

  • 谢谢。我得到 Symbol not found: _getentropy 这帮助我解决了问题并继续安装 python3(brew install --upgrade python3)。
猜你喜欢
  • 2011-08-22
  • 1970-01-01
  • 1970-01-01
  • 2016-12-12
  • 1970-01-01
  • 2015-08-02
  • 2012-02-27
  • 2017-01-19
  • 1970-01-01
相关资源
最近更新 更多