如何在Mac OS X 10.6上为Mac OS X 10.5编译Python扩展?

4 投票
1 回答
1867 浏览
提问于 2025-04-15 22:55

我正在尝试在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自带的测试套件在这个构建下通过了,所以看起来是没问题的。

撰写回答