2015-01-12 4 views
1

У меня есть приложение, которое я создаю в py2app на OSX Yosemite, которое использует lxml. Встроенное приложение выдает сообщение об ошибке в OSX 10.8.5. Вот setup.py файла я использую для py2app:Py2app include lxml

""" 
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?

UPDATE: Я также попытался это 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'], 
) 

UPDATE: Ans здесь есть версия LXML Я использую:

>>> from lxml import etree 
>>> etree.LXML_VERSION 
(3, 3, 5, 0) 

UPDATE : только что обновленный lxml до версии (3, 4, 1, 0), но по-прежнему имеет ту же проблему.

+0

Какая версия lxml? –

+0

Я обновил вопрос, включив в него версию lxml. – speedyrazor

+0

Я только что обновил lxml до версии (3, 4, 1, 0), но все же те же проблемы. – speedyrazor

ответ

0

Я нахожусь на 10.8.5, и кажется, что установленный libxml2 действительно не содержит этого символа. nm -g /usr/lib/libxml2.2.dylib | grep xmlBufContent появляется пустым. Apple, вероятно, отправляет новую версию с Yosemite. Можете ли вы (технически и юридически) связывать libxml2 с вашим приложением?

+0

Как я могу связать libxml2 с моим приложением, используя py2app? – speedyrazor

+0

Я не уверен, я никогда не использовал py2app, но теперь я вижу, что ваш OPTIONS dict дважды задает ключ 'frameworks', перезаписывая первое значение. Может быть, это завинчивает вашу сборку? Можете ли вы просмотреть встроенное приложение и убедиться, что оно содержит все необходимые вам dylib? – Simon

+0

Я обновил вопрос снова, чтобы включить только одну структуру, все еще получающую проблему. Есть ли способ исправить это? – speedyrazor