gpt4 book ai didi

python - 将 py2app 与 lxml 包一起使用时出现问题

转载 作者:太空狗 更新时间:2023-10-29 22:07:21 26 4
gpt4 key购买 nike

我正在尝试使用“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”来自“lxml”所依赖的名为“libxml2”的库。 Mac OS X 预装的版本对于“lxml”来说还不够新,所以我不得不安装 2.7.2 版(在/usr/local 中)。 py2app,出于某种原因,正在链接/Developer/SDKs/MacOSX10.3.9.sdk/usr/lib 中的版本。但是,当我将我的应用程序作为 Python 脚本运行时,会找到正确的版本。 (我刚才通过隐藏 2.7.2 版本检查了这一点。)

所以我现在的问题是,如何告诉 py2app 去哪里寻找库?

最佳答案

找到了。 py2app 有一个 'frameworks' 选项让你指定框架,还有 dylibs。我的 setup.py 文件现在看起来像这样:

from setuptools import setup

DATA_FILES = []
OPTIONS = {'argv_emulation': True,
'packages' : ['lxml'],
'frameworks' : ['/usr/local/libxml2-2.7.2/lib/libxml2.2.7.2.dylib']
}

setup(app=MyApp.py,
data_files=DATA_FILES,
options={'py2app' : OPTIONS},
setup_requires=['py2app'])

这样就解决了。

感谢引导我来到这里的建议。

关于python - 将 py2app 与 lxml 包一起使用时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/868510/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com