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

运行Python代码时出现ModuleNotFoundError:找不到mod1模块

模块导入错误解决方案

问题原因

运行Demo.py时,Python的模块搜索路径(sys.path)为MyApp目录,mod2.py中直接执行import mod1会让Python在MyApp根目录下查找mod1.py,而非mypkg子目录内的mod1,因此触发ModuleNotFoundError。

修复步骤

1. 修正mod2.py的导入语句

有两种可行的导入方式:

方式一:相对导入(包内模块引用推荐)

将mod2.py的导入语句改为相对路径,指向同包内的mod1:

from . import mod1 as P

这里的.代表当前包目录,明确告诉Python在mypkg包内查找模块。

方式二:绝对导入

使用完整的包路径导入mod1:

from mypkg import mod1 as P

运行Demo.py时,MyApp目录会自动加入Python的搜索路径,因此该路径可以被正确识别。

2. 修正Demo.py的类导入问题

原from mypkg import *仅会导入__all__指定的mod1、mod2模块,无法直接使用Person和Student类,需调整导入方式:

方案A:直接导入类

修改Demo.py代码:

from mypkg.mod1 import Person
from mypkg.mod2 import Student

a = Person('John',12,'Near S School')
print(a.show_person())

b = Student('John', 17, 'Near X Restaurant',12, 'B')
print(b.show_student())

方案B:修改__init__.py导出类

修改mypkg下的__init__.py,直接导出所需类:

from .mod1 import Person
from .mod2 import Student

__all__ = ["Person", "Student"]

这样Demo.py原有的from mypkg import *语句即可直接使用Person和Student类。

验证结果

修复后运行Demo.py,将输出:

the name of the person is John and age is 12 
The name of the student is John and he is studing in 12 standard

内容的提问来源于stack exchange,提问作者Satyaki De Sarkar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 23:30:41