Django同文件夹导入models提示ModuleNotFoundError错误如何解决?
错误原因分析
报错核心为Python导入路径不符合规范:
- 从报错栈可定位到问题出在
blogs/views.py的第2行代码:from models import Post,该写法属于全局导入规则,Python会优先从系统环境路径、Django项目根目录下搜索名为models的顶层模块,不会自动匹配当前blogs应用目录下的models.py文件,即便两个文件处于同一目录也无法识别到对应模块。
修复方案
优先使用相对导入调整导入逻辑:
- 将
blogs/views.py中第2行代码修改为:
from .models import Post
代码里的.代表当前文件所在目录,会明确指向同目录下的models.py模块。
如果需要使用绝对导入,可修改为:
from blogs.models import Post
使用该方案需要确认blogs应用已添加到项目settings.py的INSTALLED_APPS列表中,且启动Django服务的工作目录为项目根目录。
附加排查项
如果修改后仍报错,可逐一核对以下配置:
- 确认
blogs目录下存在models.py文件,文件名拼写、大小写完全正确 - 确认
blogs目录下存在空的__init__.py文件(Python3.3以上版本非强制,但Django项目中添加可避免很多导入异常) - 不要在
blogs目录下直接启动Django服务,需切换到项目根目录执行启动命令
内容的提问来源于stack exchange,提问作者Myk1709
相关产品推荐
相关产品推荐

