为什么导入python模块不导入嵌套模块?

dan*_*007 12 python python-module

如果我这样做:

import lxml 
Run Code Online (Sandbox Code Playgroud)

在python中,lxml.html不导入.例如,我无法调用该lxml.html.parse()函数.为什么会这样?

Ned*_*der 13

在Python中导入模块或包是一个概念上简单的操作:

  1. 找到与导入对应的.py文件.这涉及Python路径和其他一些机制,但会导致找到特定的.py文件.

  2. 对于导入中的每个目录级别(import foo.bar.baz有两个级别),找到相应的__init__.py文件,然后执行它.执行它只是意味着运行文件中的所有顶级语句.

  3. 最后,执行.py文件本身(foo/bar/baz.py在本例中),这意味着执行所有顶级语句.作为执行结果创建的所有全局变量都捆绑到模块对象中,该模块对象是导入的结果.

如果这些步骤都没有导入子包,则这些子包不可用.如果他们确实导入了子包,那么它们就可用了.包装作者可以按照自己的意愿行事.


Sve*_*ach 6

lxml在Python中称为,它是模块的分层集合.软件包可能很大,因此允许它们选择导入时的内容.否则,每个人都必须导入完整的层次结构,这将浪费资源.