sublime text 仅是编辑器,不运行 flask 或管理依赖,必须通过命令行启动服务、激活虚拟环境、执行 flask run 等操作,并配合终端调试与测试。

Sublime Text 本身不运行 Flask,也不管理依赖或启动服务——它只是编辑器。想用它开发 Flask 应用,核心是「编辑 + 命令行驱动」,而不是点几下按钮就跑起来。下面直接说清楚怎么做、为什么这么配、以及哪些地方容易卡住。
确认 Python 和虚拟环境已就位
Flask 运行依赖 Python 环境,而Sublime Text 不会帮你装 Python 或创建 venv。必须手动完成这步,否则后续所有命令都会报错(比如 ModuleNotFoundError: No module named 'flask')。
- 检查 Python 版本:
python --version(需 ≥ 3.7) - 创建独立环境(强烈推荐):
python -m venv flask_env - 激活环境:
- Windows:
flask_env\Scripts\activate - macOS/Linux:
source flask_env/bin/activate
- Windows:
- 安装 Flask:
pip install flask - 验证:
python -c "import flask; print(flask.<strong>version</strong>)"输出版本号才算成功
不激活虚拟环境就 pip install,包会装进全局 Python,多个项目间极易冲突;用系统自带 Python(如 macOS 的 /usr/bin/python3)装 Flask,可能因权限问题失败,或被 SIP 限制。
在 Sublime 中正确打开和保存 Flask 项目
Sublime Text 不识别“Flask 项目”这个概念,它只认文件和文件夹。但错误的打开方式会导致路径错误、模块导入失败、调试时找不到 app.py。
- 不要双击
app.py单独打开——这样 Sublime 不知道项目根目录在哪 - 正确做法:在终端进入项目文件夹后,执行
subl .(需提前配置subl命令)或用鼠标右键 → “Open with Sublime Text” - 确保项目结构清晰,例如:
myflask/ ├── app.py ├── requirements.txt └── templates/
-
app.py中的Flask(<strong>name</strong>)依赖<strong>name</strong>推导根路径,所以运行时必须在项目根目录下执行命令,不能在子目录里
常见坑:ImportError: attempted relative import with no known parent package,往往是因为你从子目录运行了 python app.py,或者用错了工作目录。
启动 Flask 服务必须走终端,不是 Ctrl+B
Sublime Text 默认的 Ctrl+B(Build)是为编译型语言设计的,对 Flask 无效。强行绑定会导致进程卡死、端口占用、热重载失效。
- 启动开发服务器的唯一可靠方式是终端命令:
flask --app app run --debug --reload - 如果
app.py不在当前目录,或入口函数名不是app,需显式指定:flask --app mymodule:dev_app run(mymodule是文件名,dev_app是变量名) -
--debug开启调试模式,--reload监听文件变化——这两个参数缺一不可,否则改代码不会自动刷新 - 不要用
python app.py启动(除非你在代码末尾写了app.run()),因为这种方式绕过了 Flask CLI,不支持环境变量、命令扩展(如flask db upgrade)
Windows 用户注意:flask 命令在某些 PowerShell 环境下会被策略阻止,可临时执行 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser,或改用 python -m flask --app app run。
调试和测试别依赖 Sublime 内置功能
SublimeREPL 插件曾流行,但它无法完整模拟 Flask 的请求上下文、session、g 对象等,执行 app.test_client() 很可能报 RuntimeError: Working outside of application context。
- 真实调试靠三件事:日志输出(
app.logger.info("xxx"))、浏览器访问、curl或 Postman 发请求 - 单元测试写在单独文件(如
test_app.py),用python -m pytest test_app.py运行 - 数据库迁移(如 Flask-Migrate)必须在终端执行:
flask db init、flask db migrate -m "init"、flask db upgrade
.sublime-project 文件可以存些快捷命令(比如预设终端启动脚本路径),但它不参与 Flask 生命周期——它只是个编辑器偏好记录,别指望它帮你解决 Working outside of application context 这类运行时问题。











