VSCode运行Django失败主因是解释器未指向含Django的虚拟环境、launch.json未设为Django模式(需"module":"django"且含"env"和"args")、以及urls.py未注册static()路由。

VSCode 运行 Django 项目失败,90% 是卡在解释器没认对、launch.json 没配成 Django 模式,或者静态文件路由根本没注册。它不会自动识别 manage.py 是个 Django 入口,必须手动告诉它“这是 Django,不是普通 Python 脚本”。
Python 解释器必须指向装了 Django 的虚拟环境
VSCode 不继承终端的激活状态,即使你在终端里 pip install django 成功了,它也可能用系统 Python 去跑,结果报 ModuleNotFoundError: No module named 'django'。
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入并选择Python: Select Interpreter - 从列表里选带
venv或env字样的路径,比如./venv/bin/python(Linux/macOS)或.\venv\Scripts\python.exe(Windows) - 别选
/usr/bin/python3、C:\Python39\python.exe这类系统路径——Django 依赖必须隔离 - 选完后看右下角状态栏是否显示该路径;再打开一个新终端,执行
which python(Linux/macOS)或where python(Windows),确认路径一致
launch.json 必须用 "module": "django",不能用 program
用 "program": "./manage.py" 启动,VSCode 会当普通脚本执行,跳过 Django 的命令解析逻辑,导致断点不命中、DJANGO_SETTINGS_MODULE 不生效、甚至直接退出无报错。
- 在项目根目录建
.vscode/launch.json,用Python: Django模板生成基础配置 - 确保
"module"字段是"django",不是"manage",也不是留空 -
"args"至少包含["runserver", "8000"];加"--noreload"才能打断点(否则 fork 子进程,调试器附着不上) -
"env"字段必须设"DJANGO_SETTINGS_MODULE": "myproject.settings"(替换成你实际的模块路径,不是文件路径)
静态文件 404?检查 urls.py 是否注册了 static()
DEBUG=True 不等于静态文件自动可访问。runserver 默认只在 URL 匹配 STATIC_URL 时才代管静态文件,但前提是主 urls.py 里显式调用了 static() 函数注册路由。
- 打开主
urls.py(通常是myproject/urls.py),确认有这段(仅开发用):
from django.conf import settings from django.conf.urls.static import static <p>urlpatterns = [</p><div class="aritcle_card flexRow artxards"> <div class="artcardd flexRow"> <a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill11354" title="Python Pep Authoring"><img src="https://img.php.cn/upload/skill/001/246/273/6adaf20e695c2374.jpg" alt="Python Pep Authoring" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a> <div class="aritcle_card_info flexColumn"> <a rel="nofollow" href="/xiazai/skill11354" title="Python Pep Authoring" class="overflowclass">Python Pep Authoring</a> <p class="overflowclass">依据官方 python/peps仓库规则起草、审阅、编辑或准备 Python 改进提案(PEP),用于处理 PEP 文本和元数据头部。</p> </div> <a rel="nofollow" href="/xiazai/skill11354" title="Python Pep Authoring" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a> </div> </div><h1>... 其他路由</h1><p>]</p><p>if settings.DEBUG: urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)</p>
- 别只改
settings.py里的STATIC_URL和STATICFILES_DIRS——那只是告诉 Django “去哪找”,没告诉它 “怎么服务” - 如果用了
whitenoise或部署到 Nginx,这一步不需要;但本地runserver必须加
settings.json 补足项目结构信息,避免路径混乱
VSCode 的 Python 插件需要知道 manage.py 和 settings 模块在哪,否则调试时可能找不到 INSTALLED_APPS,或者 Run Server 按钮灰掉。
- 在项目根目录的
.vscode/settings.json中添加:
{
"python.django.managePyPath": "./manage.py",
"python.django.settingsModule": "myproject.settings"
}
-
managePyPath必须是相对路径,写成./manage.py,不能是绝对路径或manage.py(缺./) -
settingsModule是 Python 模块路径,比如myproject.settings.dev,不是myproject/settings/dev.py - 如果项目结构是
src/myproject/,那managePyPath得写成./src/manage.py,且PYTHONPATH可能需在launch.json里补上"${workspaceFolder}/src"
最常被忽略的是:VSCode 调试器不自动加载 .env 文件,也不自动继承 shell 环境变量。所有关键配置(如数据库 URL、DEBUG 开关)得硬编码进 launch.json 的 "env" 字段,或者确保 settings.py 顶部已用 environ.Env() 正确初始化。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










