Estoy tratando de usar 'py2app' para generar una aplicación independiente desde algunos scripts de Python. Python usa el paquete 'lxml', y he descubierto que debo especificarlo explícitamente en el archivo setup.py que usa 'py2app'. Sin embargo, el programa de aplicación resultante aún no se ejecutará en máquinas que no tengan instalado 'lxml'.Problema al usar py2app con el paquete lxml
Mi Setup.py se ve así:
from setuptools import setup
OPTIONS = {'argv_emulation': True, 'packages' : ['lxml']}
setup(app=[MyApp.py],
data_files=[],
options={'py2app' : OPTIONS},
setup_requires=['py2app'])
Ejecución de la aplicación produce el siguiente resultado:
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
El símbolo '_xmlSchematronParse' es de una biblioteca llamada '' que libxml2 'lxml ' depende de. La versión que viene preinstalada con Mac OS X no está suficientemente actualizada para 'lxml', así que tuve que instalar la versión 2.7.2 (en/usr/local). py2app, por alguna razón, está enlazando en la versión en/Desarrollador/SDKs/MacSX10.3.9.sdk/usr/lib. Sin embargo, cuando ejecuto mi aplicación como un script de Python, se encuentra la versión correcta. (Lo comprobé hace un momento al ocultar la versión 2.7.2.)
Así que mi pregunta ahora es, ¿cómo puedo decirle a py2app dónde buscar las bibliotecas?
¿Encuentra libxml2.2.dylib en el subdirectorio Contents/Frameworks de su aplicación? –
Sí, está allí. –