2009-10-31 10 views
7

Ho una libreria di terze parti (l'interfaccia per gli strumenti a stati finiti di Xerox) che vengono come binari universali con due varianti internamente: una PPC e una variante i386. Ho anche un'interfaccia Python per la libreria (che usa i ctype).Esegui un binario universale OS X in modalità a 32 bit

Ma quando si tenta di eseguire il codice di esempio fornito con l'interfaccia Python ottengo un errore lamentando la biblioteca essendo l'architettura sbagliato:

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

Da quello che ho potuto capire, questo è perché gli eseguibili pitone avere una variante x86_64 internamente oltre alle due versioni nella mia libreria e preferire l'esecuzione in quella modalità. C'è un modo per me di forzare l'eseguibile python per avviare la versione i386 piuttosto che x86_64, solo per alcuni script?

risposta

17

Se si utilizza il sistema di pitone mela (il leopardo delle nevi) è possibile eseguire con

arch -i386 python 

esempio:

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

per avviare l'interprete in modalità a 32 bit. C'è anche una variabile d'ambiente che puoi impostare per il sistema python (VERSIONER_PYTHON_PREFER_32_BIT).

Se è il tuo python personalizzato, attualmente c'è un bug con la selezione di un arco, ma se lo ricostruisci con pythonw.c da this ticket funziona correttamente.

+0

che ha fatto. Molte grazie! – arnsholt

3

Se non si utilizza il pitone sistema, è possibile andare avanti e aggiungere una riga al ~/.bash_profile:

export VERSIONER_PYTHON_PREFER_32_BIT=yes 
Problemi correlati