You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在类中使用importlib出现ModuleNotFoundError的技术求助

问题解决:ModuleNotFoundError导入类错误

错误原因

你错误地将CheckOne类当作checks模块下的子模块来导入(用checks.CheckOne的格式),但实际上CheckOne是checks.py文件内定义的类,并非独立的模块文件,所以Python找不到对应的子模块,同时提示checks不是包(因为它是单个.py文件,不是目录)。

解决方案

修改database.py中的apply_checks方法,先导入checks模块,再从模块中获取目标类,而不是直接尝试导入类作为子模块:

class Database():
    def __init__(self):
        # The checks we want to perform
        self.check_names = ['CheckOne']
    
    def apply_checks(self):
        import importlib
        # 先导入checks模块
        checks_module = importlib.import_module('checks')
        # 从模块中获取对应的类对象
        check_classes = [getattr(checks_module, name) for name in self.check_names]
        # 实例化类并执行方法
        for cls in check_classes:
            cls().apply_()

额外说明

  • 无需在root目录添加__init__.py:因为你直接在root目录运行main.py,Python会自动将当前目录加入sys.path,可以直接导入同目录下的checks.py模块。
  • 之前尝试的import checks或from . import checks写法本身没问题,但核心错误是你用importlib.import_module导入类的方式错误,而非模块导入路径问题。

运行修改后的main.py,即可正常打印Performing the first check.。

内容的提问来源于stack exchange,提问作者Graham B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 10:04:55