2016-07-04 68 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