以32位模式运行OS X通用二进制文件

时间:2009-10-31 16:18:27

标签: python macos universal-binary

我有一个第三方库(Xerox有限状态工具的接口),它作为通用二进制文件在内部有两个变体:PPC和i386变体。我还有一个Python接口(使用ctypes)。

但是当我尝试运行Python接口提供的示例代码时,我得到一个错误抱怨库是错误的架构:

ImportError:dlopen(/Users/arne/sw/lib/libxcfsm.dylib,10):找不到合适的图像。找到了:
/Users/arne/sw/lib/libxcfsm.dylib:mach-o,但架构错误

从我可以收集的内容来看,这是因为除了我的库中的两个版本之外,python可执行文件内部还有一个x86_64变体,并且更喜欢在该模式下运行。有没有办法让我强制python可执行文件启动i386版本而不是x86_64版本,只是为了一些脚本?

2 个答案:

答案 0 :(得分:18)

如果您正在使用苹果系统python(在雪豹上),您可以使用

执行它
arch -i386 python

例如:

robin-mbp:~ $ arch -i386 /usr/bin/python2.6 -c "import sys; print sys.maxint"
2147483647

以32位模式启动解释器。您还可以为系统python设置环境变量(VERSIONER_PYTHON_PREFER_32_BIT)。

如果它是你自己构建的python,目前存在一个关于arch选择的错误,但如果你使用this ticket中的pythonw.c进行重建,它可以正常工作。

答案 1 :(得分:3)

如果您没有使用系统python,可以继续为~/.bash_profile添加一行:

export VERSIONER_PYTHON_PREFER_32_BIT=yes
相关问题