如何在Mac OS X 10.6上为Mac OS X 10.5编译Python扩展?
我正在尝试在Mac OS X 10.6上编译一些Python扩展(比如pycrypto、paramiko、subvertpy等),希望它们能兼容Mac OS X 10.5及其自带的Python 2.5,以便能包含在一个针对Mac OS X 10.5的产品安装包中。
我其实不太确定该怎么做。我在谷歌上查了一下,发现了StackOverflow上的一个问题,这让我在构建之前设置了环境变量MACOSX_DEPLOYMENT_TARGET=10.5,但结果却出现了错误:
distutils.errors.DistutilsPlatformError: $MACOSX_DEPLOYMENT_TARGET不匹配:现在是"10.5",但在配置时是"10.6"
我是在Mac OS X 10.6上使用Python 2.5来运行构建的,比如:
$ python2.5 setup.py install
我还看到提到过/Developer/SDKs/MacOSX10.5.sdk,但我不太确定该怎么使用它。
1 个回答
2
我成功让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
然后在Snow Leopard上使用python2.5构建pycrypto时,一切都很顺利,只需将MACOSX_DEPLOYMENT_TARGET设置为“10.5”。我不能保证它一定能很好地工作,但在我的Macbook Air上运行Leopard时,pycrypto自带的测试套件在这个构建下通过了,所以看起来是没问题的。