Question

J'ai obtenu l'erreur suivante lors de la compilation de sip avec --arch x86_64 option.

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

J'ai trouvé que les prédéfinis Mac OS X de python (snow leopard) est universelle, et qu'il ne soit pas le 64 bits bibliothèque.Je suppose que c'est en cours d'exécution sur mode 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

Comment puis-je la force python pour exécuter sur 64 bits mode?Lorsque j'exécute le même code sur Textmate, il n'y a pas de problème.Donc, je pense que Textmate devrait fonctionner sur 64 bits mode de toute façon.

Ajouté

  • Ce lien indique comment identifier si un python que je suis en cours d'exécution est 32 bits ou 64 bits.Et j'ai vérifié mon python est de 32 bits.
  • Ce lien montre comment faire 32/64bit python.Mais il ne fonctionne pas pour moi.
Était-ce utile?

La solution

Essayez d'utiliser arch(1), et de la fourniture de la version de Python:

arch -x86_64 /usr/bin/python2.6

En fait le système doit choisir la première bonne architecture pour vous.Comme

$ 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 c' python en quelque sorte choisit de 2,5, alors vous ne pouvez pas utiliser la version 64 bits, mais si elle choisit de 2,6 puis le x86_64 variante doit être automatiquement sélectionné, comme indiqué ci-dessous.Si c'est l'ancien, essayez d'obtenir python_select et de changer la version 2.6.

Autres conseils

D'accord, soyez vraiment prudent lorsque vous faites cela, il faut que d'autres choses soient également de 64 bits.Tout à coup, si mod_python ne fonctionnera pas, alors vous devez recompiler Apache.Ensuite, tous vos modules Python comme Tkinter / TIX.Si vous êtes sur 10.5 comme moi, n'allez pas là-bas, viennent de vivre avec 32 bits pour cela.

et si vous ne connaissez pas http://www.macports.org/ puis rappelez-vousQue c'est ton ami.: -)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top