Django配置应用后报错No module named 'app.urls'问题求助
Django 配置应用路由后报 ModuleNotFoundError: No module named 'app.urls' 排查解决步骤
- 排查点1:确认app目录下存在urls.py文件
python manage.py startapp命令默认不会生成应用的urls.py模块,绝大多数该报错都是漏了创建这个文件导致的。如果app目录下没有该文件,手动新建app/urls.py,基础模板如下:
from django.urls import path from . import views # 必须声明urlpatterns变量,否则还会抛出后续导入错误 urlpatterns = [ # 此处编写应用内的路由规则 ]
如果已经创建了该文件,确认文件名拼写正确(不要写成url.py、Urls.py),Windows系统可关闭「隐藏已知文件类型的扩展名」,避免生成urls.py.txt这类无效文件。
- 排查点2:检查应用路径和导包配置
确认app文件夹和项目根目录的manage.py为同级目录。如果你是将所有应用统一放在apps这类子目录下管理,需要在settings.py中添加导包路径:
import os import sys BASE_DIR = Path(__file__).resolve().parent.parent # 将apps目录加入Python导包搜索路径 sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
同时INSTALLED_APPS和路由include的路径也要对应调整为实际的包路径。
- 排查点3:排查命名冲突与大小写问题
不建议将应用命名为app这类通用名称,容易和Python内置模块、第三方依赖重名导致导包优先级异常。另外确认所有配置里的应用名称大小写和实际目录名完全一致,Linux、MacOS系统对路径大小写敏感,大小写不一致会直接导致导包失败。 - 排查点4:确认app目录被识别为Python包
如果你的Python版本低于3.3,或者项目配置了特殊的包规则,可以在app目录下新建一个空的__init__.py文件,确保该目录被识别为Python包模块。 - 排查点5:确认项目运行的工作路径正确
运行python3 manage.py runserver等命令时,必须在manage.py所在的项目根目录执行,否则Python的导包搜索路径异常会找不到应用模块。
内容的提问来源于stack exchange,提问作者Leo
相关产品推荐
相关产品推荐

