首页 > 解决方案 > ModuleNotFoundError -> 导入的模块无法导入另一个模块

问题描述

工作目录的形状如下:

* main_script.py

/ module_to_import

    * __init__.py

    * script_1.py

    * script_2.py

在 main_script.py 我们有

from module_to_import import script_1

script_1.call_something()

在 script_1.py 我们有

import script_2

def call_something():
    something = script_2.get_something()
    something = something + 1
    return something

当 main_script.py 运行时,这将返回一个

ModuleNotFoundError:没有名为“script_2”的模块

我知道这可以通过直接将 script_2 导入 main_script 来暂时解决。

有没有办法解决这个问题,以便即使 main_script 本身没有导入 script_2 , script_1 也可以可靠地导入 script_2 ?

标签: pythonpython-3.xpython-import

解决方案


当您的包被构造为子包时,在 script_1.py 中,您可以使用绝对导入

import module_to_import.script_2 as script_2

或相对之一:

from . import script_2

您可以在此处找到有关它的文档: https ://docs.python.org/3/tutorial/modules.html#intra-package-references


推荐阅读