Django运行报错ModuleNotFoundError: No module named 'blog.eg'如何解决?
Django ModuleNotFoundError: No module named 'blog.eg' 报错修复方案
报错信息
File "C:\Program Files\Python310\lib\importlib\__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1030, in _gcd_import File "<frozen importlib._bootstrap>", line 1007, in _find_and_load File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 680, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 790, in exec_module File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed File "C:\Users\user\demoDjango\blog\eg\urls.py", line 1, in <module> from blog.eg.views import home ModuleNotFoundError: No module named 'blog.eg'
报错原因
- 核心原因是
eg没有被注册为Django可识别的应用模块:你在blog/urls.py中调用include("eg.urls")时,Django会优先从已注册的应用列表中查找对应模块,未注册的应用无法被识别。 - 次要原因包括:
eg目录下缺失Python包必需的__init__.py空文件,或者eg/urls.py中使用了错误的绝对导入路径。
修复步骤
- 检查
blog/eg/目录下是否存在__init__.py文件,没有就新建一个空的同名文件,将该目录标记为可导入的Python包。 - 打开项目根目录下的
settings.py,找到INSTALLED_APPS配置项,将eg添加到列表末尾:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', # 新增注册eg应用 'eg', ]
- 确认
blog/eg/urls.py的导入语句使用相对导入,保持如下写法即可,不要写绝对导入路径:
from django.urls import path from . import views urlpatterns =[ path('', views.home, name="home"), ]
- 如果修改后仍报错,可将
blog/urls.py中的include参数修改为完整路径:
path("", include("blog.eg.urls")),
同时将settings.py中INSTALLED_APPS里的eg替换为'blog.eg'。
内容的提问来源于stack exchange,提问作者CNBL
相关产品推荐
相关产品推荐

