2010-05-20 219 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时通过了这个构建,所以它看起来没问题。