Python 为什么导入lxml不能按预期工作?

Python 为什么导入lxml不能按预期工作?,python,lxml,python-import,Python,Lxml,Python Import,我正在尝试使用lxml.etree。但是,导入的行为与我预期的不同,如下所示。我错过了什么?我从未见过其他模块有这样的行为 $ python Python 3.7.4 (default, Nov 18 2019, 17:30:21) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux Type "help", "copyright", "credits" or "license" for more information. >>>

我正在尝试使用lxml.etree。但是,导入的行为与我预期的不同,如下所示。我错过了什么?我从未见过其他模块有这样的行为

$ python
Python 3.7.4 (default, Nov 18 2019, 17:30:21)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import lxml
>>> lxml.etree
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'lxml' has no attribute 'etree'
>>> from lxml import etree
>>> etree
<module 'lxml.etree' from '/home/me/env/project/lib/python3.7/site-packages/lxml/etree.cpython-37m-x86_64-linux-gnu.so'>
>>> lxml.etree
<module 'lxml.etree' from '/home/me/env/project/lib/python3.7/site-packages/lxml/etree.cpython-37m-x86_64-linux-gnu.so'>
>>>
$python
Python 3.7.4(默认值,2019年11月18日,17:30:21)
linux上的[GCC 4.8.5 20150623(Red Hat 4.8.5-39)]
有关详细信息,请键入“帮助”、“版权”、“信用证”或“许可证”。
>>>导入lxml
>>>lxml.etree
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
AttributeError:模块“lxml”没有属性“etree”
>>>从lxml导入etree
>>>埃特雷
>>>lxml.etree
>>>

我相信这可以归结为lxml包是如何定义的。如果深入研究站点包,您将看到一个只包含一个函数的
\uuuu init\uuuu.py
。因此,
import lxml
只允许您访问该函数。但由于存在
\uuuu init\uuuu.py
,您仍然可以访问lxml中定义的子模块。这就是为什么
从lxml导入etree
工作这是由作者设计的
lxml.etree
可能是一个包,而不是一个具有函数的模块。