2011-08-31 15 views
1

我在Mac OS X 10.6版本上使用Python。我最近安裝了最新的Mac OS X開發人員工具SDK,其中包含GCC。我擁有的軟件開發工具包是:如何使Python和distutils在Mac OS X上使用正確的SDK?

$ ls /Developer/SDKs/ 
MacOSX10.4u.sdk MacOSX10.5.sdk MacOSX10.6.sdk 

我想使用的Mac OS X 10.6與Python /的distutils,每當我安裝一個Python包「的setup.py安裝」,需要編譯。

我注意到,Python的經過-isysroot標誌和路徑的Mac OS X 10.5 (未10.6),即:

$ python-config --cflags --ldflags 
-I/Library/Frameworks/EPD64.framework/Versions/7.0/include/python2.7 -I/Library/Frameworks/EPD64.framework/Versions/7.0/include/python2.7 -fno-strict-aliasing -fno-common -dynamic -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.5.sdk -DNDEBUG -g -O3 -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.5.sdk -I/Library/Frameworks/EPD64.framework/Versions/7.0/include 
-L/Library/Frameworks/EPD64.framework/Versions/7.0/lib/python2.7/config -ldl -framework CoreFoundation -lpython2.7 EPD64.framework/Versions/7.0/Python 

我如何糾正呢?我希望它使用10.6 SDK。

現在,當我運行在所有需要C語言編譯程序包「蟒蛇的setup.py安裝」,它的產量,看起來像這樣GCC電話:

gcc -fno-strict-aliasing -fno-common -dynamic -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.5.sdk -DNDEBUG -g -O3 -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.5.sdk -I/Library/Frameworks/EPD64.framework/Versions/7.0/include -DHAVE_RINTF=1 -DHAVE_FINITE=1 -DHAVE_EXPM1=1 -DHAVE_RINT=1 -DHAVE_LOG2=1 -DHAVE_LOGBL=1 -DHAVE_SNPRINTF=1 -DHAVE_LOG1P=1 -DHAVE_ROUND=1 -DHAVE_FMIN=1 -Iinclude -Isrc/lapack -Isrc/f2c -I/Library/Frameworks/EPD64.framework/Versions/7.0/include/python2.7 -c src/f2c/signal_.c -o build/temp.macosx-10.5-x86_64-2.7/src/f2c/signal_.o 

這就要求在其路徑10.5的SDK。

我使用Python的Enthought Python Distribution安裝以防萬一。

非常感謝。

回答

4

這是一個功能,不應該引起任何後顧之憂。 Distutils故意確保您構建的C擴展模塊的構建方式與構建使用的Python解釋器的方式相同。以這種方式構建的擴展向上兼容:它們也可以在10.6上運行。如果您絕對想要使用10.6 ABI功能,則應該使用使用10.6 SDK構建的Python,例如,從最近的python.org 64位安裝程序或MacPorts或Homebrew。

2

我@Ned Deily

的海報完全不贊成明顯使用Enthought Python發行(EPD),並安裝全新的Python將需要全新的infrastracture的安裝。 我有同樣的情況。在帶有Mac Os X 10.6的MacBook上,項目(MeshPy)可以正確構建,但在使用Mac OS X 10.7的Imac中卻不行(沒有提供10.5 SDK,並且使用此SDK製作了EPD)。你可以嘗試安裝這個老SDK,然而,一個更簡單的黑客(希望它的作品)是使一個符號鏈接:

sudo ln -sf MacOSX10.6.sdk MacOSX10.5.sdk 

它爲我工作。