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

Python项目调用其他模块类报错:ModuleNotFoundError问题求助

解决相对导入引发的ModuleNotFoundError问题

这是Python相对导入的典型坑,我来帮你理清楚问题根源和解决办法:

问题到底出在哪?

当你直接运行webcam_classifier.py时,这个脚本会被Python标记为__main__模块。而带.的相对导入(比如from .Student import Student)只能在包结构内部生效——也就是说,只有当你的脚本作为某个包的一部分被导入时,Python才会识别这种相对路径。直接运行脚本时,Python不会把当前目录当作一个包,自然找不到所谓的__main__.Student模块。

两种可行的解决方案

方案1:改用绝对导入(最简单直接)

如果webcam_classifier.py和Student.py在同一个文件夹下,直接去掉导入语句里的.就行:

from Student import Student

这种写法在直接运行webcam_classifier.py时完全有效,Python会自动在当前目录下查找Student.py文件。

方案2:把目录转为包,用模块方式运行

如果你坚持要用相对导入(比如项目结构复杂,需要明确区分包内模块),可以按以下步骤操作:

  1. 在两个文件所在的文件夹里新建一个空文件__init__.py,这样Python就会把这个目录识别为一个包(比如包名叫my_classifier)。
  2. 从这个文件夹的上级目录运行脚本,用-m参数指定模块路径:
python -m my_classifier.webcam_classifier

这样运行时,webcam_classifier.py会被当作my_classifier包的一部分,相对导入的.就会指向当前包,就能正确找到Student类了。

额外小提示

如果你的项目后续会扩展成更复杂的结构,建议提前规划好包结构,并用-m方式运行脚本,能避免不少导入相关的奇怪问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:40:32