Pregunta

Recibí el siguiente error al compilar sip con la opción --arch x86_64.

prosseek:siplib smcho$ python -c 'import sip; print sip'
Traceback (most recent call last):
  File "", line 1, in 
ImportError: dlopen(./sip.so, 2): no suitable image found.  Did find:
        ./sip.so: mach-o, but wrong architecture

Descubrí que el Python (leopardo de las nieves) de Mac OS X prediseñado es universal y no tiene la biblioteca de 64 bits.Supongo que se está ejecutando en modo de 32 bits.

file /usr/bin/python 
/usr/bin/python: Mach-O universal binary with 3 architectures
/usr/bin/python (for architecture x86_64):      Mach-O 64-bit executable x86_64
/usr/bin/python (for architecture i386):        Mach-O executable i386
/usr/bin/python (for architecture ppc7400):     Mach-O executable ppc
prosseek:siplib smcho$ file sip.so
sip.so: Mach-O 64-bit bundle x86_64

¿Cómo puedo forzar que Python se ejecute en modo de 64 bits?Cuando ejecuto el mismo código en Textmate, no hay problema.Entonces, creo que Textmate debería ejecutarse en modo de 64 bits de todos modos.

Agregado

  • Este enlace muestra cómo identificar si un Python que estoy ejecutando es de 32 bits o de 64 bits.Y verifiqué que mi Python es de 32 bits.
  • Este enlace muestra cómo hacer Python de 32/64 bits.Pero no me funciona.
¿Fue útil?

Solución

Intenta usar arco(1), y proporcione la versión específica de Python:

arch -x86_64 /usr/bin/python2.6

En realidad, el sistema debería elegir la primera arquitectura adecuada para usted.Como

$ file /usr/bin/python2.5
/usr/bin/python2.5: Mach-O universal binary with 2 architectures
/usr/bin/python2.5 (for architecture i386): Mach-O executable i386
/usr/bin/python2.5 (for architecture ppc7400):  Mach-O executable ppc

$ file /usr/bin/python2.6
/usr/bin/python2.6: Mach-O universal binary with 3 architectures
/usr/bin/python2.6 (for architecture x86_64):   Mach-O 64-bit executable x86_64
/usr/bin/python2.6 (for architecture i386): Mach-O executable i386
/usr/bin/python2.6 (for architecture ppc7400):  Mach-O executable ppc

Si eso python de alguna manera elige 2.5, entonces no puede usar 64 bits, pero si elige 2.6 entonces la variante x86_64 debería seleccionarse automáticamente, como se comenta a continuación.Si es lo primero, intenta conseguir python_select y cambie la versión a 2.6.

Otros consejos

De acuerdo, tenga mucho cuidado cuando hagas esto, necesitará otras cosas para ser de 64 bits.De repente, si Mod_Python no funcionará, entonces necesita volver a compilar Apache.Luego todos los módulos de Python como Tkinter / Tix.Si estás en 10.5 como yo, no vayas allí, solo vive con 32 bits para ello.

y si no sabe sobre http://www.macports.org/ entonces recuerdaque es tu amigo- -)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top