Как заставить py2app запускать приложение в 32-битном режиме - PullRequest
4 голосов
/ 19 сентября 2011

Я пытаюсь собрать комплект приложений с py2app на Mac OS X 10.6.Приложение использует некоторые библиотеки, которые скомпилированы только для 32-разрядных систем, поэтому при запуске приложения возникает ошибка ImportError "нет подходящей 64-разрядной архитектуры".Как я могу сказать py2app заставить приложение работать в 32-битном режиме?

Ответы [ 5 ]

6 голосов
/ 30 ноября 2011

Если вы хотите работать только в 32-битном режиме, то вам не нужна 64-битная архитектура. Таким образом, вы можете просто удалить все архитектуры, отличные от i386, из полученного пакета приложений, используя утилиту ditto.

Пример:

ditto --rsrc --arch i386 YourApplication.app YourApplicationStripped.app

Ваш пакет приложений будет меньше и наверняка будет работать как 32-битное приложение, даже на 64-битных системах Intel.

Руководство: http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/ditto.1.html

Или просто запустить в терминале: man ditto

5 голосов
/ 19 сентября 2011

Одним из способов является использование 32-битного Python, такого как 32-битные версии, загружаемые с python.org, с py2app.Другой способ - установить LSArchitecturePriority на i386 и, возможно, ppc в Info.plist сгенерированного пакета приложений.См. здесь для получения дополнительной информации.

4 голосов
/ 29 января 2012

После долгих усилий и попыток заставить работать wx мне удалось заставить его работать, используя этот метод, я также включил версии, которые я установил
Это был единственный, который работал для меня, я надеюсь, что это помогает другим ..

py2applet --arch=i386 -i (includes here) --make-setup (pythonfiles, icon)

Шахта выглядит примерно так

py2applet --arch=i386 -i wx, platform --make-setup print.py print.icns convert.py

Я установил python2.7 с
wxPython2.8-OSX-юникод-py2.7
Setuptools-0.6c11-py2.7.egg
а затем

sudo easy_install-2.7 py2app

Это установленная версия 0.6.4 py2applet

1 голос
/ 14 мая 2013

Хорошо, поскольку я работаю в одном офисе из Вебьорна, возможно, это лучшее место, чтобы опубликовать ответ, поэтому мы найдем его снова. Имеется словарь опций py2app:

options = {}
...
options['plist'] = { "LSArchitecturePriority": [ "i386" ] }
...
setup(options={'py2app':options})

Это создает массив из одного строкового значения для ключа LSArchitecturePriority.

0 голосов
/ 19 сентября 2011

Вам нужно заставить Python работать в 32-битном режиме.

...