如何在Mac OS X 10.6上编译Mac OS X 10.5的python扩展?

时间:2010-05-20 04:29:43

标签: python macos cross-compiling

我正在尝试在Mac OS X 10.6上编译各种python扩展(pycrypto,paramiko,subvertpy ...),这样它们将与Mac OS X 10.5及其内置的python 2.5兼容,包括在Mac OS X 10.5中的目标产品安装程序中。

我真的不确定该怎么做。我在Google上挖了一下a question here on stackoverflow,这让我在构建之前在我的环境中设置了MACOSX_DEPLOYMENT_TARGET = 10.5,但这只是给了我错误:

  

distutils.errors.DistutilsPlatformError:$ MACOSX_DEPLOYMENT_TARGET不匹配:配置期间现在为“10.5”但“10.6”

我在Mac OS X 10.6上使用python2.5来运行构建,例如:

  

$ python2.5 setup.py install

我也遇到了对/Developer/SDKs/MacOSX10.5.sdk的引用,但我不确定如何使用它。

1 个答案:

答案 0 :(得分:1)

我设法让distutils相信Python是在Leopard上构建的,在setup.py中调用setup()之前插入以下代码:

# 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

然后在将MACOSX_DEPLOYMENT_TARGET设置为“10.5”后,pycrypto在Snow Leopard上使用python2.5构建良好。我不能保证它会运行良好,但是pycrypto的捆绑测试套件在我的Macbook Air运行Leopard上通过了这个版本,所以看起来没问题。