Django应用导入失败:ModuleNotFoundError问题排查求助
Django应用导入问题解决
错误现象
在mysite/urls.py中执行from mysite.register import views时,触发以下错误:
File "C:\python mini\PyCharm Community Edition 2021.1.1\MyBlog\mysite\mysite\urls.py", line 3, in <module> from mysite.register import views ModuleNotFoundError: No module named 'mysite.register'
尝试直接写from register import views时,PyCharm会将该语句标红,但实际Django运行时可正常工作。
项目配置
settings.py核心配置
from pathlib import Path import os BASE_DIR = Path(__file__).resolve().parent.parent STATIC_DIR = os.path.join(BASE_DIR, 'static') CRISPY_TEMPLATE_PACK = "bootstrap4" STATIC_URL = '/static/' SECRET_KEY = '' DEBUG = True ALLOWED_HOSTS = [] # Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'blog', 'menu', 'register.apps.RegisterConfig', ]
mysite/urls.py代码
from django.contrib import admin from django.urls import path, include from mysite.register import views urlpatterns = [ path('admin/', admin.site.urls), path('', include('blog.urls')), path("register/", views.register, name="register"), ]
问题原因分析
- 导入路径错误:你的项目结构中,
register应用与blog、menu同级,位于项目根目录(BASE_DIR)下,而非mysite子目录内。mysite/urls.py本身处于mysite/mysite/目录,使用mysite.register会让Python去mysite/mysite/register下寻找模块,自然找不到对应内容。 - PyCharm标红问题:这是IDE的路径识别偏差,只需将项目根目录(
C:\python mini\PyCharm Community Edition 2021.1.1\MyBlog\mysite)设置为Sources Root即可消除标红。
解决方法
修改mysite/urls.py中的导入语句:
# 替换原来的from mysite.register import views from register import views
由于你已经在INSTALLED_APPS中注册了register.apps.RegisterConfig,Django会自动识别该应用模块,运行时不会报错。
关于blog urls的疑问
当前mysite/urls.py中已经使用path('', include('blog.urls'))将blog应用的路由纳入全局路由,只要blog应用下存在urls.py文件并配置了对应路由规则,这个配置是正确的,不需要额外修改。
内容的提问来源于stack exchange,提问作者dfdbn
相关产品推荐
相关产品推荐

