Pergunta

Eu tenho o seguinte erro quando estiver compilando o sip com --arch x86_64 opção.

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

Eu achei que o pré-construído Mac OS X python (snow leopard) é universal, e isso não a 64 bits biblioteca.Eu acho que é executado no 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

Como posso forçar python para executar em 64bit modo?Quando eu executar o mesmo código no Textmate, não há nenhum problema.Então, eu acho que o Textmate deve ser executado no modo de 64 bits de qualquer maneira.

Adicionado

  • Este link mostra como identificar se o python que eu estou correndo é 32bit ou 64bit.E eu verifiquei minha python é de 32 bits.
  • Este link mostra como fazer 32/64bit python.Mas isso não funciona para mim.
Foi útil?

Solução

Tente usar arch(1), e fornecer a versão específica do Python:

arch -x86_64 /usr/bin/python2.6

Na verdade, o sistema deve escolher a primeira arquitetura para você.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

Se que python de alguma forma, escolhe 2.5, em seguida, você não pode usar 64 bits, mas se ele escolhe 2.6, em seguida, o x86_64 variante deve ser automaticamente selecionada, como comentado abaixo.No primeiro caso, para tentar obter python_select e altere a versão 2.6.

Outras dicas

Ok, se ter MUITO cuidado quando você fizer isso, vai precisar de outras coisas, também de 64 bits.De repente, se mod_python não funcionar, em seguida, você precisará recompilar o apache.Em seguida, todos os seus módulos python como tkinter/tix.Se você está em 10.5 gosta de mim, não vá lá, só vivo com 32-bit para ele.

E se você não sabe sobre http://www.macports.org/ em seguida, lembre-se de que é seu amigo.:-)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top