我正在尝试使用“py2app”从一些 Python 脚本生成一个独立的应用程序。Python 使用“lxml”包,我发现我必须在“py2app”使用的 setup.py 文件中明确指定这一点。但是,生成的应用程序仍然无法在没有安装“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 在哪里寻找库?