2009-10-31 39 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 
相關問題