Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 导入子模块的子模块上的ModuleNotFoundError_Python_Python 3.x_Python Import - Fatal编程技术网

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
文档链接: