2009-10-31 117 views
7

我有一个第三方库(与Xerox的Finite State工具的接口),它在内部具有两种变体:PPC和i386变体。我也有一个到库的Python接口(使用ctypes)。在32位模式下运行OS X通用二进制

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

ImportError: dlopen(/Users/arne/sw/lib/libxcfsm.dylib, 10): no suitable image found. Did find:
/Users/arne/sw/lib/libxcfsm.dylib: mach-o, but wrong architecture

据我所知,这是因为蟒蛇可执行文件除了我的库中的两个版本之外,还内置了x86_64变体,并且更愿意以该模式运行。有没有办法让我强制python可执行文件启动i386版本而不是x86_64版本,只需要一些脚本?

回答

17

如果您使用的是苹果系统的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)。

如果这是你自己的内置蟒蛇目前还拱选择的错误,但是如果你用pythonw.c从this ticket重建它工作正常。

+0

这做到了。非常感谢! – arnsholt 2009-10-31 17:51:51

3

如果您没有使用该系统的Python,你可以继续添加一行到您的~/.bash_profile

export VERSIONER_PYTHON_PREFER_32_BIT=yes 
相关问题