Я пытаюсь использовать 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, где искать библиотеки?