2016-07-04 127 views
8

我想在OS X El Capitan(10.11.5)上构建Python(3.5.2)。但是,当我尝试make时遇到了错误。该错误似乎与有关。在OS X上构建Python 3:[Python/importlib.h]错误133

/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


我完全承认,这是一个学术活动,如埃尔卡皮坦Python自带2.7.10,你可以很容易地与官方的OS X安装包或通过自制安装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错误。

+0

有点不相关,考虑到你想自己构建它,但是确定 'brew install python3'有帮助吗? – Arqu

+1

是的,我和家酿一起去了,但我仍然很好奇它的建造。 – lukejanicke

+0

是否将'--enable-universalsdk'添加到'configure'来解决问题? –

回答

5

固定。

./configure的输出中,我注意到对/Applications/Xcode-beta.app/Contents/Developer/的引用。几天前我安装了Xcode 8(测试版)。切换回常规命令行工具(使用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
+0

我得到了一个类似的错误,也许出于不同的原因 - 尽管使用Xcode 8(在macOS Sierra 10.12.6上)。在我的例子中,工作是在MacPorts(关于'gcc')之前放置默认路径('/ usr/...'),并在[CPython存储库]中使用'make distclean'清理(https://github.com /蟒/ CPython的)。 –

+0

相关:https://stackoverflow.com/a/36790088/1959808 –

5

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

如果您将Xcode更新为8(测试版),则必须再次运行xcode-select --install以安装所有构建工具。

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

我希望这会帮助其他人在这里遇到同样的问题。

+0

谢谢。我没有找到Symbol:_getentropy,这帮助我解决了这个问题并继续安装python3(brew install --upgrade python3)。 – apadana