2010-05-20 210 views
3

我試圖在Mac OS X 10.6上編譯各種python擴展(pycrypto,paramiko,subvertpy ...),這樣它們將與Mac OS X 10.5及其內置python 2.5兼容,在目標爲Mac OS X 10.5的產品安裝程序中。如何在Mac OS X 10.6上編譯Mac OS X 10.5的python擴展?

我真的不知道如何去做這件事。我周圍挖谷歌和發現a question here on stackoverflow,害得我設置MACOSX_DEPLOYMENT_TARGET = 10.5在建設之前我的環境,但只是給我的錯誤:

distutils.errors.DistutilsPlatformError: $MACOSX_DEPLOYMENT_TARGET mismatch: now "10.5" but "10.6" during configure

我使用的python2.5在Mac OS X 10.6運行構建,例如:

$ python2.5 setup.py install

我還隔着引用來到/Developer/SDKs/MacOSX10.5.sdk,但我真的不知道如何利用它。

+0

你還在Snow Leopard上使用Python 2.5嗎?我認爲捆綁的是2.6,我敢肯定,你將無法構建一個擴展,爲2.6工作2.5 ... – fraca7 2010-05-20 11:18:14

+0

我使用python2.5可執行文件來運行構建。 – dOxxx 2010-05-20 20:37:08

回答

1

我設法得到的distutils認爲Python的是建立在Leopard中,通過調用建立之前插入以下代碼()在setup.py:

# XXXHACK: make distutils believe that Python was built on Leopard. 
from distutils import sysconfig 
their_parse_makefile = sysconfig.parse_makefile 
def my_parse_makefile(filename, g): 
    their_parse_makefile(filename, g) 
    g['MACOSX_DEPLOYMENT_TARGET'] = '10.5' 
sysconfig.parse_makefile = my_parse_makefile 

然後pycrypto建立以及雪豹,在將MACOSX_DEPLOYMENT_TARGET設置爲「10.5」之後使用python2.5。我無法保證它可以正常工作,但是pycrypto的捆綁測試套件在我的MacBook Air上運行Leopard時通過了這個構建,所以它看起來沒問題。