Python 导入子模块的子模块上的ModuleNotFoundError
假设我们有以下结构:Python 导入子模块的子模块上的ModuleNotFoundError,python,python-3.x,python-import,Python,Python 3.x,Python Import,假设我们有以下结构: outer_module.py| |subfolder| |__init__.py |inner_module.py |foo.py 在outer_module.py中,我们有: from subfolder.inner_module import X from foo import Y 在
outer_module.py|
|subfolder|
|__init__.py
|inner_module.py
|foo.py
在outer_module.py
中,我们有:
from subfolder.inner_module import X
from foo import Y
在
internal_module.py
中,我们有:
from subfolder.inner_module import X
from foo import Y
然后我得到一个
modulenofounderror:No-module'foo'
运行outer\u module.py
。如何导入导入子模块而不获取ModuleNotFoundError的子模块?从foo导入
从顶层导入模块foo
。您需要明确限定您正在同一个包中查找模块
使用.foo
表示您正在从同一软件包导入:
from .foo import Y
您还可以指定绝对路径,但必须包括包名称:
from subfolder.foo import Y
引述:
指定要导入的模块时,不必指定模块的绝对名称。当一个模块或包包含在另一个包中时,可以在同一个顶层包中进行相对导入,而不必提及包名。通过在from之后的指定模块或包中使用前导点,可以指定向上遍历当前包层次结构的高度,而无需指定确切的名称。一个前导点表示进行导入的模块所在的当前包。两个点意味着上一个包级别。三个点代表两个级别,以此类推。因此,如果从执行。从pkg
包中的模块导入mod
,然后导入pkg.mod
。如果您从..subpkg2 import mod执行from.pkg.subpkg1
中的
在内部模块.py
中,使用相对导入或绝对导入:
from .foo import Y
# or
from subfolder.foo import Y
文档链接: