Как заставить использовать 64-битный Python на Mac OS X? - PullRequest
4 голосов
/ 08 июля 2010

Я получил следующую ошибку при компиляции sip с параметром --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

Я обнаружил, что предустановленный Mac OS X python (снежный барс) универсален, и он не получает 64-битную библиотеку. Я думаю, он работает в 32-битном режиме.

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

Как заставить Python работать в 64-битном режиме? Когда я запускаю тот же код на TextMate, нет проблем. Итак, я думаю, Textmate должен работать в 64-битном режиме в любом случае.

Добавлена ​​

  • Эта ссылка показывает, как определить, является ли питон, на котором я работаю, 32-битным или 64-битным. И я проверил, что мой питон 32-битный.
  • Эта ссылка показывает, как сделать 32/64-битный питон. Но это не работает для меня.

Ответы [ 2 ]

6 голосов
/ 08 июля 2010

Попробуйте использовать arch (1) и укажите конкретную версию Python:

arch -x86_64 /usr/bin/python2.6

На самом деле система должна выбрать первую подходящую архитектуру для вас.Например,

$ 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

Если этот python каким-то образом выберет 2,5, вы не сможете использовать 64-битную версию, но если выберете 2,6, тогда вариант x86_64 должен быть выбран автоматически, как прокомментировано ниже.Если это первое, попробуйте получить python_select и изменить версию на 2.6.

1 голос
/ 08 июля 2010

Ладно, будьте ДЕЙСТВИТЕЛЬНО осторожны, когда вы делаете это, другие вещи также должны быть 64-битными.Внезапно, если mod_python не будет работать, вам нужно перекомпилировать apache.Тогда все ваши модули Python, такие как tkinter / tix.Если вы на 10,5, как я, не ходите туда, просто жить с 32-разрядным для этого.

И если вы не знаете о http://www.macports.org/, помните, что это ваш друг.: -)

...