7

我有一个第三方库(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 版本吗?

4

2 回答 2

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,则当前存在拱形选择的错误,但如果您使用此票证中的 pythonw.c 进行重建,它可以正常工作。

于 2009-10-31T16:28:24.013 回答
3

如果您不使用系统 python,您可以继续添加一行到您的~/.bash_profile

export VERSIONER_PYTHON_PREFER_32_BIT=yes
于 2011-10-14T20:13:11.243 回答