Migrate Python dependencies to uv

This commit is contained in:
2026-07-17 10:04:44 +08:00
parent fb0a53676f
commit a54364f8f5
5 changed files with 307 additions and 19 deletions
+15 -4
View File
@@ -19,7 +19,8 @@ main.py FastAPI 后端
frontend/index.html 前端页面
compose.yaml MySQL Docker Compose 配置
schema.sql 数据库建表脚本
requirements.txt Python 依赖及版本
pyproject.toml 项目元数据和直接依赖
uv.lock uv 锁文件(完整、精确的依赖图)
.env.example 环境变量示例(不含真实密码)
deploy/nginx-todolist.conf Nginx 站点配置
deploy/todolist.service systemd 服务配置
@@ -30,6 +31,7 @@ deploy/todolist.service systemd 服务配置
- Windows + WSL2 Ubuntu(当前部署方式)
- Python 3.12 或兼容版本
- uv 0.11 或兼容版本
- Docker Engine 与 Docker Compose 插件
- Nginx
- systemd(用于后台运行 FastAPI)
@@ -38,11 +40,20 @@ deploy/todolist.service systemd 服务配置
```bash
cd /home/dwh/code/fastapi_todolist
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt
uv sync --locked
```
`uv sync --locked` 会根据 `uv.lock` 创建 `.venv` 并安装已锁定的精确版本。
`--locked` 要求锁文件必须与 `pyproject.toml` 一致,不会在部署时悄悄改写依赖解析结果。
开发时可以使用 uv 在项目环境中运行命令:
```bash
uv run uvicorn main:app --host 127.0.0.1 --port 8000
```
项目的依赖来源是 `pyproject.toml` 和 `uv.lock`。新增或删除依赖时使用 `uv add` 或 `uv remove`,不手动维护第二套依赖清单。
如果部署用户或目录不同,需要同步修改 `deploy/todolist.service` 中的 `User`、`WorkingDirectory` 和 `ExecStart`。
## 2. 准备环境变量