2009-10-31 4 views
7

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

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

ImportError: dlopen(/Users/arne/sw/lib/libxcfsm.dylib, 10): no suitable image found. Did find:
/Users/arne/sw/lib/libxcfsm.dylib: mach-o, but wrong architecture

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

ответ

17

Если вы используете систему яблока питона (на ирбиса), вы можете выполнить его с

arch -i386 python 

например:

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

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

Если это ваш собственный встроенный python, в настоящее время существует ошибка с выбором дуги, но если вы перестраиваете с pythonw.c от this ticket, он отлично работает.

+0

Это сделал. Большое спасибо! – arnsholt

3

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

export VERSIONER_PYTHON_PREFER_32_BIT=yes