9

我在 Windows 上运行 Python 2.5.4,并且在尝试导入 ElementTree 或 cElementTree 模块时不断收到错误消息。代码非常简单(我正在学习教程):

import xml.etree.ElementTree as xml

root = xml.Element('root')
child = xml.Element('child')
root.append(child)
child.attrib['name'] = "Charlie"
file = open("test.xml", 'w')
xml.ElementTree(root).write(file)
file.close()

当我从 cmd 运行它时会收到错误消息,或者当我直接从 Python 解释器尝试它时不会收到错误消息。

Traceback (most recent call last):  
File "C:\xml.py", line 31, in <module>
  import xml.etree.ElementTree as xml   
File "C:\xml.py", line 31, in <module>
  import xml.etree.ElementTree as xml
ImportError: No module named etree.ElementTree

另外,我检查了模块在 C:\Python25\Lib\xml\etree 中

4

4 回答 4

48

因为你的原始文件名是C:\xml.py

将文件名更改为任何其他名称

于 2012-04-25T22:25:39.630 回答
12

report("ImportError: No module named etree.ElementTree")测试文件命名为xml.py. 当我它重命名为xmltest.py.

于 2012-09-01T02:45:49.307 回答
7

你错过了教程中非常重要的一行

import xml.etree.ElementTree as xml

这使得 xml.etree.ElementTree 现在在整个模块中都称为 xml。

我碰巧有 python 2.5.4,并且我已经验证了您上面的相同代码是否有效:

user@Comp test$ cat test.py 
import xml.etree.ElementTree as xml

root = xml.Element('root')
child = xml.Element('child')
root.append(child)
child.attrib['name'] = "Charlie"
file = open("test.xml", 'w')
xml.ElementTree(root).write(file)
file.close()

user@Comp test$ /usr/bin/python2.5 --version
Python 2.5.4
user@Comp test$ /usr/bin/python2.5 test.py 
user@Comp test$ cat test.xml 
<root><child name="Charlie" /></root>user@Comp test$ 

因此,请检查并确保您正在运行 python 2.5.4,如果您尝试重新安装。问题不在于它是 python 2.5.4 或您的代码。这是一些安装问题,您正在运行不同版本的python,或者还有其他一些奇怪的问题。

于 2010-06-18T21:26:05.313 回答
5

我遇到了一个有趣的情况,可能与此类似,也可能不同,并找到了我的解决方案。我创建了自己的模块来解析 xml 文件。我把它放进去my_project_root/utilities/xml.py。何时import xml.etree.ElementTreexml.etree从该模块中,我会收到此帖子标题中的错误。它本身正在搜索,因此它试图从 xml.py 中搜索,但import etree.ElementTree找不到名为 的包或模块etree。我将模块的名称更改为 xml_parse.py 并删除my_project_root/utilities/xml.pyc,它运行良好。一个简单的提醒,注意使用模块命名约定。

于 2012-01-17T22:12:23.150 回答