Python子包不可用于导入



我是在之前发布的这个问题的基础上工作的:模块导入自身

本质上,这个问题已经解决了,但在"modulename.py"文件中,定义了一个类,其中包含一个init函数和一个ui函数。在课堂内,任何一行的形式:

import submodule

功能会很好。然而

import submodule.subsubmodule

import subsubmodule

将产生ImportError。

所有子模块和子模块都有一个

__init__.py

文件。

如果一个包中有多个同名模块,就会经常发生这种情况。

例如,考虑:

mypkg/
__init__.py
toplevel.py
mypkg.py

如果toplevel.py文件调用import mypkg.mypkg,它实际上将导入mypkg.py文件,而不是包。

您可以通过将from __future__ import absolute_import作为toplevel.py中的第一行来解决此问题,这将强制它导入顶级包。

或者,您可以在toplevel.py中使用from . import mypkg,这将显式导入mypkg.py文件。

最新更新