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

同级目录模块导入类时遇ModuleNotFoundError问题求助

错误原因

Python查找模块的路径是基于脚本执行时的工作目录和sys.path列表来定位的:

  • 运行moduleB内的driver_script_B.py时,当前工作目录就是moduleB,所以from function_c import function_c能直接找到同目录下的function_c.py。
  • 运行moduleA内的driver_script_A.py时,当前工作目录是moduleA,Python会在sys.path里找名为function_c的顶级模块,但此时sys.path里只有..(即parent_dir)和默认路径,function_c.py在moduleB目录下,不属于顶级模块,所以找不到。
解决方法

推荐用规范的包内导入方式,有两种可靠方案:

方案1:使用相对导入(推荐,符合包内模块引用规范)

修改class_B.py里的导入语句,用相对路径引用同包内的function_c:

from .function_c import function_c

这里的.表示当前模块所在的包(即moduleB),Python会自动在moduleB目录下查找function_c.py,不管从哪个路径导入class_B都能正常工作。

方案2:使用绝对导入

如果习惯用绝对路径导入,修改class_B.py的导入语句为:

from moduleB.function_c import function_c

因为你在driver_script_A.py里已经把parent_dir(..)加入了sys.path,moduleB作为parent_dir下的顶级包,Python能直接找到它下面的function_c模块。

额外注意

你的代码里存在一处笔误:class_B.py里定义的类是class B:,但driver_script_A.py里写的是from module_B.class_B import class_B,应该改成from module_B.class_B import B,否则会出现ImportError。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 19:53:17