使用 Poetry + VS Code 创建你的第一个 Flask 工程

使用 Poetry + VS Code 创建你的第一个 Flask 工程

本篇博客同样隶属于勇闯前后端系列的Python博客系列

我见过使用Python来入门后端框架的朋友,基本上选择就是Flask或者是FastAPI,为此,笔者这里决定单独开几个重要的博客,详细的阐述如何使用Poetry + VSCode来创建我们的第一个Flask工程。

基本上,这篇博客期望完成:

  • 环境准备(WSL + Python + Poetry)
  • 使用 Poetry 初始化 Flask 项目
  • 创建最小 Flask 程序
  • 使用 poetry run / poetry shell 启动应用
  • 配置 VS Code 自动选择 Poetry 虚拟环境
  • 推荐的项目结构
  • 常见问题 & 解决方案
  • 官方参考资料

适合希望将 Flask 工程化、专业化开发的同学。


1. 🧱 准备环境

笔者喜欢的是WSL,这里,关于WSL如何安装笔者不计划重复了,自行搜索引擎。

检查 Python 版本(建议 3.10+)
bash 复制代码
python3 --version
确认 Poetry 已安装
bash 复制代码
poetry --version

如果未安装,可以用官方安装脚本,当然,笔者优先建议你好好看一看教程,poetry还是很好用的

Introduction | Documentation | Poetry - Python dependency management and packaging made easy

bash 复制代码
curl -sSL https://install.python-poetry.org | python3 -

2. 📦 用 Poetry 创建 Flask 项目

进入你想存放项目的目录:

bash 复制代码
mkdir flask-demo
cd flask-demo
初始化 Poetry 项目
bash 复制代码
poetry init --no-interaction

这会生成 pyproject.toml

安装 Flask
bash 复制代码
poetry add flask

Poetry 会自动创建一个虚拟环境存放依赖。

检查虚拟环境路径:

bash 复制代码
poetry env info --path

你会看到类似:

复制代码
/home/xxx/.cache/pypoetry/virtualenvs/flask-demo-py3.11

3. 📝 创建最小 Flask Demo

在项目根目录创建 app.py

python 复制代码
from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return "<h1>Hello, Flask (from Poetry)!</h1>"

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000, debug=True)

这是 Flask 官方 quickstart 的最小版本。


▶️ 启动 Flask 应用(3 种方式)

下面是 Poetry 中最常用、最稳定的运行方式。


✔ 方法 A:在 Poetry 虚拟环境中运行

进入 Poetry shell:

bash 复制代码
poetry shell
python app.py

✔ 方法 B:不进入 shell,直接运行
bash 复制代码
poetry run python app.py

或使用 Flask CLI:

bash 复制代码
poetry run flask --app app --debug run

--debug 会自动开启热重载。


✔ 方法 C:写到 pyproject 里(可选)

编辑 pyproject.toml

toml 复制代码
[tool.poetry.scripts]
run-app = "app:app"

然后运行:

bash 复制代码
poetry run run-app

🧩 配置 VS Code 自动选择 Poetry 虚拟环境

这是大家最常问的点!有的时候咱们的VSCode可能没有找到poetry为我们创建的虚拟环境,导致货不对板。


方法 1:手动选择解释器(一次性)

按:

复制代码
Ctrl + Shift + P → "Python: Select Interpreter"

选择:

poetry env info --path可以校验出来你应该选哪一个Path的

复制代码
Poetry: /home/.../virtualenvs/xxx/bin/python

方法 2:让 Poetry 把 venv 放到项目内(超级自动)
bash 复制代码
poetry config virtualenvs.in-project true
poetry env remove $(poetry env list --full-path)
poetry install

项目根目录会出现 .venv/,VS Code 会自动识别。


📁 推荐的 Flask 项目结构(专业版)

虽然 demo 可以直接用 app.py,更推荐如下结构:

复制代码
flask-demo/
│
├── app/
│   ├── __init__.py
│   ├── routes.py
│   └── extensions.py
│
├── instance/
│   └── config.py
│
├── app.py
├── pyproject.toml
└── README.md

app/__init__.py

python 复制代码
from flask import Flask

def create_app():
    app = Flask(__name__)

    from .routes import bp
    app.register_blueprint(bp)

    return app

app/routes.py

python 复制代码
from flask import Blueprint

bp = Blueprint("main", __name__)

@bp.route("/")
def hello():
    return "Hello from blueprint!"

运行:

bash 复制代码
poetry run flask --app app:create_app --debug run

Reference📚 官方参考资料

相关推荐
0思必得03 小时前
[Web自动化] Selenium处理动态网页
前端·爬虫·python·selenium·自动化
韩立学长3 小时前
【开题答辩实录分享】以《基于Python的大学超市仓储信息管理系统的设计与实现》为例进行选题答辩实录分享
开发语言·python
qq_192779873 小时前
高级爬虫技巧:处理JavaScript渲染(Selenium)
jvm·数据库·python
超级大只老咪4 小时前
快速进制转换
笔记·算法
u0109272714 小时前
使用Plotly创建交互式图表
jvm·数据库·python
爱学习的阿磊4 小时前
Python GUI开发:Tkinter入门教程
jvm·数据库·python
froginwe114 小时前
Scala 循环
开发语言
m0_706653234 小时前
C++编译期数组操作
开发语言·c++·算法
故事和你914 小时前
sdut-Java面向对象-06 继承和多态、抽象类和接口(函数题:10-18题)
java·开发语言·算法·面向对象·基础语法·继承和多态·抽象类和接口
Bruk.Liu4 小时前
(LangChain实战2):LangChain消息(message)的使用
开发语言·langchain