2009-10-31 2 views
7

Mam bibliotekę innej firmy (interfejs do narzędzi skończonych Xeroxa), które są dostarczane jako uniwersalne pliki binarne z dwoma wariantami wewnętrznymi: PPC i wariant i386. Mam również interfejs Pythona do biblioteki (która używa ctypes).Uruchamianie uniwersalnego pliku binarnego systemu OS X w trybie 32-bitowym

Ale gdy próbuję uruchomić przykładowy kod dostarczony z interfejsem Python pojawia się błąd narzeka na biblioteki będącej źle architektura:

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

Z tego co mogę zebrać, to dlatego wykonywalnych Pythona mieć wersję x86_64 wewnętrznie oprócz dwóch wersji w mojej bibliotece i wolę pracować w tym trybie. Czy jest jakiś sposób, aby wymusić uruchomienie pliku python, aby uruchomić wersję i386 zamiast x86_64, tylko dla niektórych skryptów?

Odpowiedz

17

Jeśli używasz systemu pyton jabłko (na irbis) można wykonać go z

arch -i386 python 

np

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

aby uruchomić interpreter w trybie 32-bitowym. Istnieje również zmienna środowiskowa, którą możesz ustawić dla pythona systemowego (VERSIONER_PYTHON_PREFER_32_BIT).

Jeśli jest to twój własny zbudowany python, jest obecnie błąd z wyborem łuku, ale jeśli przebudujesz z pythonw.c z this ticket, to działa dobrze.

+0

że szkoda. Wielkie dzięki! – arnsholt

3

Jeśli nie używasz Pythona systemie, można śmiało dodać linię do ~/.bash_profile:

export VERSIONER_PYTHON_PREFER_32_BIT=yes