我在OSX Yosemite上用py2app构建了一个应用程序,它使用lxml。构建的应用程序在OSX 10.8.5上抛出错误。下面是我在py2app中使用的setup.py文件:
"""
This is a setup.py script generated by py2applet
Usage:
python setup.py py2app
"""
from setuptools import setup
APP = ['iTunes_Upload_App_V6.2.py']
DATA_FILES = []
OPTIONS = {
'iconfile':'AppleLogo.icns',
'packages' : ['wx', 'lxml'],
'plist': {'CFBundleShortVersionString':'6.2',}
}
setup(
app=APP,
name='iTunes_Upload_App_V6.2',
data_files=DATA_FILES,
options={'py2app': OPTIONS},
setup_requires=['py2app'],
)这是我在没有安装额外模块或软件的OSX 10.8.5机器上运行它时收到的错误。
-------------------
Application Error!
10-53-07_09-01-2015
Traceback (most recent call last):
File "/Applications/iTunes_Upload_App_V6.2.app/Contents/Resources/iTunes_Upload_App_V6.2.py", line 1781, in GetJobInfo
File "lxml/etree.pyc", line 14, in <module>
File "lxml/etree.pyc", line 10, in __load
ImportError: dlopen(/Applications/iTunes_Upload_App_V6.2.app/Contents/Resources/lib/python2.7/lib-dynload/lxml/etree.so, 2): Symbol not found: _xmlBufContent
Referenced from: /Applications/iTunes_Upload_App_V6.2.app/Contents/Resources/lib/python2.7/lib-dynload/lxml/etree.so
Expected in: /usr/lib/libxml2.2.dylib
in /Applications/iTunes_Upload_App_V6.2.app/Contents/Resources/lib/python2.7/lib-dynload/lxml/etree.so我可以在10.8.5系统上不安装任何其他东西的情况下使其工作吗?
更新:我也尝试了这个setup.py,仍然不起作用:
"""
This is a setup.py script generated by py2applet
Usage:
python setup.py py2app
"""
from setuptools import setup
APP = ['iTunes_Upload_App_V6.2.py']
DATA_FILES = []
OPTIONS = {'argv_emulation': True,
'packages' : ['lxml'],
'frameworks' : ['/usr/local/libxml2-2.7.2/lib/libxml2.2.7.2.dylib'],
'iconfile':'AppleLogo.icns',
'plist': {'CFBundleShortVersionString':'6.2',}
}
setup(
app=APP,
name='iTunes_Upload_App_V6.2',
data_files=DATA_FILES,
options={'py2app': OPTIONS},
setup_requires=['py2app'],
)更新: Ans这里是我使用的lxml版本:
>>> from lxml import etree
>>> etree.LXML_VERSION
(3, 3, 5, 0)更新:刚刚将lxml更新到版本(3,4,1,0),但仍然存在相同的问题。
发布于 2015-01-12 18:43:06
我使用的是10.8.5,看起来安装的libxml2确实不包含这个符号。nm -g /usr/lib/libxml2.2.dylib | grep xmlBufContent是空的。苹果可能会在Yosemite上发布一个更新的版本。你能(从技术上和法律上)将libxml2与你的应用捆绑在一起吗?
https://stackoverflow.com/questions/27896963
复制相似问题