Я пытаюсь использовать «py2app» для создания автономного приложения из некоторых сценариев Python. Python использует пакет «lxml», и я обнаружил, что должен указать это явно в файле setup.py, который использует «py2app». Однако получившаяся прикладная программа по-прежнему не будет работать на машинах, на которых не установлен lxml.
Мой Setup.py выглядит так:
from setuptools import setup
OPTIONS = {'argv_emulation': True, 'packages' : ['lxml']}
setup(app=[MyApp.py],
data_files=[],
options={'py2app' : OPTIONS},
setup_requires=['py2app'])
Запуск приложения приводит к следующему выводу:
MyApp Error
An unexpected error has occurred during execution of the main script
ImportError: dlopen(/Users/ake/XXXX/XXXX/MyApp.app/Contents/Resources/lib/python2.5/lxml/etree.so, 2): Symbol not found: _xmlSchematronParse
Referenced from: /Users/ake/XXXX/XXXX/MyApp.app/Contents/Resources/lib/python2.5/lxml/etree.so
Expected in: dynamic lookup
Символ «_xmlSchematronParse» взят из библиотеки под названием «libxml2», от которой зависит «lxml». Версия, предустановленная в Mac OS X, недостаточно актуальна для «lxml», поэтому мне пришлось установить версию 2.7.2 (в /usr/local). py2app по какой-то причине ссылается на версию в /Developer/SDKs/MacOSX10.3.9.sdk/usr/lib. Когда я запускаю свое приложение как скрипт Python, правильная версия найдена. (Я только что проверил это, скрыв версию 2.7.2.)
Итак, теперь мой вопрос: как я могу указать py2app, где искать библиотеки?