创建flask项目应选“空白flask web项目”模板,注意目录结构、模块命名与import路径一致,配置launch.json启用flask模块调试,并手动激活虚拟环境确保依赖正确加载。

Visual Studio 创建 Flask 项目时必须选对模板
直接搜“Flask”会看到多个模板,但只有 空白 Flask Web 项目 是轻量可控的起点。其他如“投票 Flask Web 项目”或“Flask Web 项目”自带数据库、用户认证等复杂结构,新手容易卡在依赖冲突或路由不生效上。
创建时注意三点:
- 取消勾选
将解决方案和项目放置在同一目录,否则后续添加多项目时路径混乱 - 解决方案名(如
LearningFlask)和项目名(如BasicProject)要区分,避免模块导入出错 - 项目生成后立刻检查
requirements.txt是否含Flask==2.3.3类版本号——Flask ≥2.3 已移除FLASK_ENV,硬写会报警告
VS 中 Flask 项目结构不能照搬 Flask 官方推荐方式
官方教程常把 app.py 和 views.py 平级放,但在 Visual Studio 里这样会导致 import HelloFlask.views 失败,因为 VS 默认把项目根目录当包顶层,而 __init__.py 缺失会让 Python 无法识别子模块。
正确做法是:
- 右键项目文件夹 →
添加 > 新文件夹,命名为HelloFlask(名字必须与后续 import 一致) - 在该文件夹内加
__init__.py(注意前后各两个下划线),内容只写from flask import Flask; app = Flask(__name__); import HelloFlask.views -
views.py必须放在同一级,且函数要用@app.route装饰,不能用flask.Flask(__name__).route重新实例化
调试 Flask 必须绕过 VS 的默认 Python 启动逻辑
直接点绿色三角运行,VS 会执行 python app.py,导致 url_for() 报错、断点不触发、热重载失效——这不是代码问题,是启动方式错了。
关键配置在 launch.json(需手动创建):
-
"module": "flask"是唯一有效字段,"program": "app.py"必须删掉 -
"args": ["run", "--no-reload"]:调试时加--no-reload防止 Werkzeug fork 子进程导致断点丢失 -
"envFile": "${workspaceFolder}/.env"必须显式写出,.env文件要 UTF-8 无 BOM,内容仅两行:FLASK_APP=HelloFlask.__init__:app和FLASK_DEBUG=1
虚拟环境激活状态在 VS 中不可信
底部状态栏显示 venv 路径 ≠ 当前终端已激活该环境。常见现象是 pip 安装了 Flask,但运行时报 ModuleNotFoundError: No module named 'flask'。
验证和修复步骤:
- 打开 VS 内置终端,手动执行
venv\Scripts\activate.bat(Windows)或source venv/bin/activate(macOS/Linux) - 再运行
python -c "import flask; print(flask.__version__)"确认输出版本号 - 如果失败,说明 VS 没选对解释器:Ctrl+Shift+P →
Python: Select Interpreter→ 手动指向venv\Scripts\python.exe
Flask 项目在 VS 里跑起来不难,难的是它不报错却行为异常——比如路由返回 404、url_for 生成空字符串、静态文件 404,这些问题八成出在 FLASK_APP 指向错误或模块层级没对齐,而不是代码逻辑本身。











