Запустите универсальный двоичный файл OS X в 32-разрядном режиме - PullRequest
7 голосов
/ 31 октября 2009

У меня есть сторонняя библиотека (интерфейс к инструментам конечного состояния Xerox), которая поставляется в виде универсальных двоичных файлов с двумя внутренними вариантами: вариант PPC и вариант i386. У меня также есть интерфейс Python для библиотеки (которая использует ctypes).

Но когда я пытаюсь запустить пример кода, предоставляемого с интерфейсом Python, я получаю сообщение об ошибке, указывающее на неправильную архитектуру библиотеки:

ImportError: dlopen (/Users/arne/sw/lib/libxcfsm.dylib, 10): подходящее изображение не найдено. Нашел:
/Users/arne/sw/lib/libxcfsm.dylib: Mach-O, но неправильная архитектура

Из того, что я могу понять, это потому, что исполняемые файлы python имеют вариант x86_64 внутри, в дополнение к двум версиям в моей библиотеке, и предпочитают работать в этом режиме. Есть ли какой-нибудь способ заставить исполняемый файл python запустить версию i386, а не x86_64, только для некоторых сценариев?

Ответы [ 2 ]

18 голосов
/ 31 октября 2009

Если вы используете системный питон apple (на снежном барсе), вы можете запустить его с помощью

arch -i386 python

например:

robin-mbp:~ $ arch -i386 /usr/bin/python2.6 -c "import sys; print sys.maxint"
2147483647

для запуска интерпретатора в 32-битном режиме. Существует также переменная окружения, которую вы можете установить для системного питона (VERSIONER_PYTHON_PREFER_32_BIT).

Если это ваш собственный созданный питон, в настоящее время есть ошибка с выбором арки, но если вы перестраиваете с pythonw.c из этот билет , он работает нормально.

3 голосов
/ 15 октября 2011

Если вы не используете системный питон, вы можете пойти дальше и добавить строку к своему ~/.bash_profile:

export VERSIONER_PYTHON_PREFER_32_BIT=yes
...