Как принудительно использовать 64-битный Python в Mac OS X?

StackOverflow https://stackoverflow.com/questions/3207324

Вопрос

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

Я обнаружил, что готовый Python для Mac OS X (снежный барс) является универсальным и не имеет 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-битном режиме.

Добавлен

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

Решение

Попробуйте использовать арка(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.

Другие советы

Хорошо, будьте очень осторожны, когда вы делаете это, это потребует в других целях, также быть 64-битным.Внезапно, если mod_python не будет работать, то вам нужно перекомпилировать Apache.Затем все ваши модули Python, как TKinter / Tix.Если вы на 10,5, как я, не ходите туда, просто живите с 32-битными для него.

И если вы не знаете о http://www.macports.org/ Тогда помнитеЭто твой друг.: -)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top