Django新手教程中出现ModuleNotFoundError: No module named 'polls'报错求助
Django 4.2 中 ModuleNotFoundError: No module named 'polls' 解决方法
环境与问题背景
- Django版本:4.2
- Python版本:3.10
- 开发工具:VS Code
- 操作:跟随Django官方教程创建
polls投票应用,编写代码后运行出现ModuleNotFoundError: No module named 'polls'错误。
编写的代码文件
polls/views.py
from django.http import HttpResponse def index(request): return HttpResponse("Hello, world. You're at the polls index.")
polls/urls.py
from django.urls import path import views urlpatterns = [ path('', views.index, name='index'), ]
mysite/urls.py
from django.contrib import admin from django.urls import include, path urlpatterns = [ path('polls/', include('polls.urls')), path('admin/', admin.site.urls), ]
报错信息
Traceback (most recent call last): File "a:\experimental_files\vs_code\djangoExer\mysite\mysite\tempCodeRunnerFile.py", line 5, in <module> path('polls/', include('polls.urls')), File "c:\users\yasir amin brohi\desktop\django\django\urls\conf.py", line 38, in include urlconf_module = import_module(urlconf_module) File "C:\Users\Yasir Amin Brohi\AppData\Local\Programs\Python\Python310\lib\importlib\__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1050, in _gcd_import File "<frozen importlib._bootstrap>", line 1027, in _find_and_load File "<frozen importlib._bootstrap>", line 992, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed File "<frozen importlib._bootstrap>", line 1050, in _gcd_import File "<frozen importlib._bootstrap>", line 1027, in _find_and_load File "<frozen importlib._bootstrap>", line 1004, in _find_and_load_unlocked ModuleNotFoundError: No module named 'polls'
原因分析
polls应用未被注册到Django项目的已安装应用列表中,导致Django无法识别该模块。polls/urls.py中的import views不符合Python 3的相对导入规范,可能引发导入路径问题。- 若
polls目录缺少__init__.py文件,会导致Python无法将其识别为合法模块。
解决方案
1. 注册polls应用到INSTALLED_APPS
打开mysite/settings.py,找到INSTALLED_APPS列表,添加'polls':
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', # 添加此行注册polls应用 'polls', ]
2. 修正polls/urls.py的导入语句
将import views改为Python 3支持的相对导入:
from django.urls import path # 使用相对导入当前应用的views模块 from . import views urlpatterns = [ path('', views.index, name='index'), ]
3. 确认目录结构合法性
确保项目目录结构如下(重点是polls目录下存在__init__.py):
mysite/ manage.py mysite/ __init__.py settings.py urls.py ... polls/ __init__.py # 必须存在,标识为Python模块 admin.py apps.py models.py urls.py views.py ...
4. 验证修复结果
在项目根目录(包含manage.py的文件夹)执行以下命令启动开发服务器:
python manage.py runserver
访问http://localhost:8000/polls/,若页面显示"Hello, world. You're at the polls index.",则问题已解决。
内容的提问来源于stack exchange,提问作者user18939954
相关产品推荐
相关产品推荐

