py2app and xml.etree.ElementTree
我正在尝试使用Python的内置xml.etree.elementTree类构建一个使用一些XML数据的应用程序。当我从命令行运行时,它可以正常工作,但是当我构建它时,我会得到一个错误"importError:no module etree.elementtree"。我猜这是因为我没有正确导入该模块,但是我还没有弄清楚如何导入。当我使用"includes"或"packages"指令时,py2app会抱怨同样的错误,当我特别指定package_dir(/system/library/…)时,它会编译,但仍然会给出错误。我用了一个简短的例子来说明这个问题。
MacXML.py版
1 2 3 4 5 | from xml.etree.ElementTree import ElementTree if __name__ == '__main__': tree = ElementTree() print tree.parse('lib.xml') |
这应该打印出"
设置.py
1 2 3 4 5 | from setuptools import setup setup(name="Mac XML Test", app=['macxml.py'], ) |
号
什么是使Mac应用程序使用此库的正确方法?
Python2.6.4
Mac OS X 10.6.2版
编辑:我也在另一台Mac(PPC10.5.8)上用python 2.6.2进行了尝试,并取得了相同的结果。
因为评论没有很好的格式,
在find eu modules.py中,我更改了
1 2 3 | REPLACEPACKAGES = { '_xmlplus': 'xml', } |
到
1 2 3 | REPLACEPACKAGES = { #'_xmlplus': 'xml', } |
。
XML导入工作正常。
在重新安装和更新macholib、modulegraph、py2app和setuptools后,我做了更多的挖掘,发现modulegraph模块中存在以下错误:
1 2 3 4 5 6 7 8 | graphmodule.find_modules.find_modules(includes=['xml.etree']) Traceback (most recent call last): File"<stdin>", line 1 in <module> File".../modulegraph/find_modules.py", line 255 in find_modules File".../modulegraph/find_modules.py", line 182 in find_needed_modules File".../modulegraph/modulegraph.py", line 401 in import_hook File".../modulegraph/modulegraph.py", line 464 in load_tail ImportError: No module named xml.etree |
因此,我更深入地研究了
1 2 3 4 5 6 7 8 | from setuptools import setup import xml.etree.ElementTree setup(name="Mac XML Test", app=['macxml.py'], options={'py2app': {'includes': ['xml.etree.ElementTree']}}, data_files=[('', ['lib.xml'])] ) |
号
输出显示在控制台中。
如果您使用的是MacPorts(或Fink等),请确保
如果这不起作用,我解决路径问题的步骤是:
如果第2步。在