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

arn*_*olt 7 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版本,只是为了一些脚本?

rob*_*nce 18

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

arch -i386 python
Run Code Online (Sandbox Code Playgroud)

例如:

robin-mbp:~ $ arch -i386 /usr/bin/python2.6 -c "import sys; print sys.maxint"
2147483647
Run Code Online (Sandbox Code Playgroud)

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

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