这是如何导入etree(ElementTree)子包的一个怪癖.
您必须明确导入子包才能使其可用:
import lxml.etree
full_xml_tree = lxml.etree.parse('myfile.xml')
实现您尝试执行的操作的推荐方法是导入ElementTree模块:
import xml.etree.ElementTree as ET
tree = ET.parse('myfile.xml')
为什么会这样?
想象一个包含这样的目录结构的包:
test_pkg/__init__.py
test_pkg/shown_module.py
test_pkg/hidden_module.py
以及__init__.py包含以下内容:
from . import shown_module
使用这个包你直接使用shown_module:
>>> import test_pkg
>>> test_pkg.shown_module
但是hidden_module不能直接使用:
>>> test_pkg.hidden_module
Traceback (most recent call last):
File "", line 1, in
AttributeError: module 'test_pkg' has no attribute 'hidden_module'
但是如果导入它可以使用它:
>>> import test_pkg.hidden_module
>>> test_pkg.hidden_module
但是,我不知道为什么ElementTree是“隐藏的”.