vscode 跑 django 需对齐解释器、路径与调试配置:选对虚拟环境解释器;launch.json 设 "module": "django"、"args": ["runserver", "--noreload"]、"django": true;settings.json 配 managepypath 和 settingsmodule;env 变量须在 launch.json 中显式注入。

VSCode 能跑 Django,但默认配置下几乎必然失败——不是代码问题,而是解释器、路径、调试模式三者没对齐。
Python 解释器选错是 90% 的 ImportError: No module named 'django' 根源
终端里 python -m django --version 能跑,VSCode 却报错,说明它根本没用你装了 Django 的那个 Python。VSCode 不继承 shell 的环境,只认你手动指定的解释器路径。
- 按
Ctrl+Shift+P(macOS 是Cmd+Shift+P),输入Python: Select Interpreter - 从列表中选带
venv或env字样的路径,比如./venv/bin/python(Linux/macOS)或.\venv\Scripts\python.exe(Windows) - 右下角状态栏必须显示这个路径,不是
/usr/bin/python3或C:\Python39\python.exe - 打开一个
.py文件,悬停from django.conf import settings,确认没有红线
launch.json 里写 "module": "django",不是 "program": "manage.py"
直接运行 manage.py 会让 VSCode 当作普通脚本执行,跳过 Django 命令解析逻辑,runserver 参数不生效,断点也进不去视图函数。
Go语言(Golang)1.26.0版本提供 Go 官方 Windows amd64 MSI 安装包下载入口,版本号 1.26.0,可用于旧项目维护、兼容性测试和指定版本开发环境配置。
- 在
.vscode/launch.json中添加配置,"type"和"request"字段保持默认,但必须设"module": "django" -
"args"写成["runserver", "--noreload"]:去掉--noreload会导致 Django fork 子进程,VSCode 只附着在父进程,断点失效 - 必须加
"django": true,否则调试器不启用 Django 特有支持(如模板渲染上下文、请求对象展开) - 别在
manage.py里打断点——它只执行一次,真正处理请求的是django.core.servers.basehttp启动的线程
settings.json 必须显式声明 managePyPath 和 settingsModule
VSCode 不自动识别 Django 项目结构。光有解释器和 launch.json 还不够,Run Server 按钮灰掉、跳转不到 models.py、模板语法无提示,基本都是这里漏配。
- 在工作区根目录的
.vscode/settings.json中加入:{ "python.django.managePyPath": "./manage.py", "python.django.settingsModule": "myproject.settings" } -
managePyPath必须是相对路径,不能写绝对路径;settingsModule是 Python 模块路径(如myproject.settings.dev),不是文件路径 - 如果
settingsModule错了,调试时INSTALLED_APPS为空,静态文件路由、中间件全失效 - 确保
myproject/__init__.py存在,否则模块导入失败
环境变量(尤其是 DJANGO_SETTINGS_MODULE)得靠 launch.json 的 env 字段硬塞
os.getenv('DEBUG') 返回 None?不是 .env 文件没读,是 VSCode 调试器压根没把环境变量传给子进程。
- 在
launch.json的调试配置里加"env"字段:"env": { "DJANGO_SETTINGS_MODULE": "myproject.settings", "PYTHONUNBUFFERED": "1" } - 不要依赖
manage.py自动设置——它只在命令行有效,VSCode 不走那条启动路径 - 如果用
django-environ,确保.env和manage.py同级,且settings.py顶部已执行env = environ.Env() -
DEBUG=True在settings.py里写死 ≠ 调试器能读到,环境变量必须由调试器注入才生效
最容易被忽略的是 --noreload 和 "django": true 的组合——缺一不可。前者让断点落在真实请求处理线程里,后者让 VSCode 知道“这是 Django,别当普通 Python 脚本跑”。这两项漏掉任何一项,调试就退化成反复改代码 + print()。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










