重构Flask测试应用时出现ModuleNotFoundError导入错误如何解决?
错误原因
- 模块名不匹配是核心问题:你的内层
passless包中存储视图逻辑的文件命名为index.py,但/passless/passless/__init__.py中尝试导入的是passless.views模块,项目中不存在views.py文件,因此触发ModuleNotFoundError。
解决方案
你可以任选以下任意一种方案修复问题:
方案1:修改导入语句匹配现有文件名
将/passless/passless/__init__.py中的导入代码:
import passless.views
修改为:
# 绝对导入写法 import passless.index # 也可以用更规范的包内相对导入写法 # from . import index
如果你的路由逻辑都写在index.py中,修改完成后重启容器即可正常运行。
方案2:修改文件名匹配Flask官方包模式约定
将内层passless包中的index.py重命名为views.py,完全符合你参考的Flask包模式的命名规范,不需要修改导入语句,重启容器即可生效。
注意:你的docker-compose配置中已经将本地项目目录挂载到容器内的
/app目录,本地修改的文件会实时同步到容器中,修改完成后执行docker-compose restart web重启服务即可验证修复结果。
内容的提问来源于stack exchange,提问作者xil3
相关产品推荐
相关产品推荐

