ElementTree中使用SimpleXMLTreeBuilder
-
21-08-2019 - |
题
我一直在开发使用Django和ElementTree的一个应用程序的同时将其部署到生产服务器我已经发现它正在运行蟒2.4。我已经能够捆绑ElementTree的,但现在我正在错误:
"No module named expat; use SimpleXMLTreeBuilder instead"
可惜这样坚持了什么,我得到了我的IM不能升级蟒蛇。如何使用SimpleXMLTreeBuilder作为解析器和/或将我需要重写代码?
解决方案
如果您有想要(通过依赖和XMLTreeBuilder)使用ElementTree中可以ElementTree中的XMLTreeBuilder定义改为由SimpleXMLTreeBuilder像这样提供一个第三方模块:
from xml.etree import ElementTree # part of python distribution
from elementtree import SimpleXMLTreeBuilder # part of your codebase
ElementTree.XMLTreeBuilder = SimpleXMLTreeBuilder.TreeBuilder
现在的ElementTree将始终使用时,它就是所谓的SimpleXMLTreeBuilder。
参见: http://groups.google.com/group /谷歌-应用服务引擎/ browse_thread /线程/ b7399a91c9525c97
其他提示
我们在CentOS 5.5使用Python版本2.6.4遇到了同样的问题。
在问题发生在当外籍类尝试加载pyexpat模块,见/usr/lib64/python2.6/xml/parsers/expat.py
寻找/usr/lib64/python2.6/lib-dynload/的内部,没看到“pyexpat.so”共享对象。然而,我没有看到它另一台机器,将其不具有问题上。
我比较了Python版本(荫列表“蟒*”),并确定该正常机器有蟒2.6.5。运行“百胜更新python26”修复问题对我来说。
如果不为你工作,你想玩闹的解决方案,您可以复制SO文件到您的动态负载路径。
假设你现在正在使用elementtree.XMLTreeBuilder
,只是试试这个来代替:
from elementtree import SimpleXMLTreeBuilder as XMLTreeBuilder
它试图提供完全相同的功能,但使用外籍的的xmllib代替。如果这也失败了,顺便说一句,请尝试:
from elementtree import SgmlopXMLTreeBuilder as XMLTreeBuilder
要尝试使用又一实现中,这一个基于sgmlop代替。
这ElementTree的进口SimpleXMLTreeBuilder作为XMLTreeBuilder
好了,它已略微现在改:
Traceback (most recent call last):
File "C:\Python26\tests\xml.py", line 12, in <module>
doc = elementtree.ElementTree.parse("foo.xml")
File "C:\Python26\lib\site-packages\elementtree\ElementTree.py", line 908, in parse
tree = parser_api.parse(source)
File "C:\Python26\lib\site-packages\elementtree\ElementTree.py", line 169, in parse
parser = XMLTreeBuilder()
File "C:\Python26\lib\site-packages\elementtree\ElementTree.py", line 1165, in __init__
"No module named expat; use SimpleXMLTreeBuilder instead"
ImportError: No module named expat; use SimpleXMLTreeBuilder instead
我认为这是静态与旧版本的Python之类的东西联系在一起。有没有一种简单的方法,以XML分析器连接到Python 2.6?一些图书馆似乎只工作与旧版本8(
我有同样的错误,你当我开发了在Solaris和蟒蛇2.7.2。
之后我用pkgin安装蟒蛇expat
包我解决了这个问题。
见如果上述方案可以给你的想法。