Ich versuche, ‚py2app‘ zu verwenden, um eine eigenständige Anwendung von einigem Python-Skripte zu generieren. Der Python verwendet das Paket 'lxml', und ich habe festgestellt, dass ich dies explizit in der Datei setup.py angeben muss, die 'py2app' verwendet. Das resultierende Anwendungsprogramm wird jedoch weiterhin nicht auf Computern ausgeführt, auf denen 'Lxml' nicht installiert ist.Problem mit py2app mit dem lxml Paket
Mein Setup.py sieht wie folgt aus:
from setuptools import setup
OPTIONS = {'argv_emulation': True, 'packages' : ['lxml']}
setup(app=[MyApp.py],
data_files=[],
options={'py2app' : OPTIONS},
setup_requires=['py2app'])
Ausführen der Anwendung erzeugt die folgende Ausgabe:
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
Das Symbol '_xmlSchematronParse' ist aus einer Bibliothek 'libxml2' genannt, dass ‚lxml ' kommt drauf an. Die Version, die mit Mac OS X vorinstalliert ist, ist nicht aktuell genug für 'lxml', also musste ich Version 2.7.2 (in/usr/local) installieren. py2app verlinkt aus irgendeinem Grund in der Version in /Developer/SDKs/MacOSX10.3.9.sdk/usr/lib. Wenn ich meine Anwendung jedoch als Python-Skript ausführe, wird die richtige Version gefunden. (Ich habe das jetzt nur durch die 2.7.2 Version versteckt.)
So jetzt meine Frage ist, wie kann ich sagen py2app wo für Bibliotheken suchen?
Sie finden Sie im Inhaltsverzeichnis/Frameworks subdir Ihrer App libxml2.2.dylib? –
Ja, es ist da. –