Python import xml不包含xml.etree.ElementTree

时间:2016-11-02 19:20:23

标签: python xml module namespaces

我喜欢在python中使用完整的命名空间来说明模块/库的可读性。我想知道为什么这对xml库不起作用。我认为import xml也会导入etree和命名空间中的其他所有内容。至少我注意到其他模块的行为。

$ ptpython
>>> import xml

>>> dir(xml.etree.ElementTree)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'etree'
'module' object has no attribute 'etree'

>>> import xml.etree.ElementTree

>>> dir(xml.etree.ElementTree)
['Comment', 'Element', 'ElementPath', 'ElementTree', 'HTML_EMPTY', 'PI',...]

两个问题:

  1. 为什么会出现xml库?
  2. 有没有办法用像import xml
  3. 这样的短片来导入它

3 个答案:

答案 0 :(得分:3)

  

我认为import xml还会导入etree和命名空间中的其他所有内容。至少我已经注意到其他模块的行为。

导入包不会自动导入该包中的子模块。确实,某些软件包为您提供了便利,但它并非默认行为。在这种情况下,您需要执行您已经想到的事项:import xml.etree.ElementTree

答案 1 :(得分:0)

尝试使用from xml.etree import ElementTree这适用于我。

答案 2 :(得分:0)

这是与python3.6之前版本的defusedxml的兼容性问题...如果现在仍然遇到错误,请将defusedxml升级到0.6.0版本。为我工作。