使用UV管理FastAPI项目

FastAPI是一个现代高性能Python WEB框架。可以使用uv管理FastAPI项目,包括安装依赖、管理环境、运行FastAPI应用等。

现有FastAPI项目迁移

例如一个如下结构的FastAPI项目:

bash 复制代码
project
└── app
    ├── __init__.py
    ├── main.py
    ├── dependencies.py
    ├── routers
    │   ├── __init__.py
    │   ├── items.py
    │   └── users.py
    └── internal
        ├── __init__.py
        └── admin.py

要使用uv,在项目目录下运行:

bash 复制代码
uv init --app

创建应用框架和pyproject.toml文件。

然后,增加FastAPI依赖:

复制代码
uv add fastapi --extra standard

项目框架变化为:

复制代码
project
├── pyproject.toml
└── app
    ├── __init__.py
    ├── main.py
    ├── dependencies.py
    ├── routers
    │   ├── __init__.py
    │   ├── items.py
    │   └── users.py
    └── internal
        ├── __init__.py
        └── admin.py

pyproject.toml文件内容类似以下内容:

toml 复制代码
[project]
name = "uv-fastapi-example"
version = "0.1.0"
description = "FastAPI project"
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
    "fastapi[standard]",
]

现在,就可以运行FastAPI应用:

bash 复制代码
uv run fastapi dev

uv run自动解析和锁定项目依赖库,创建uv.lock,创建虚拟环境,在该环境中运行指令。

在浏览器中打开http://127.0.0.1:8000/?token=jessica进行测试。

部署

可以使用一下Dockerfile在Docker中部署FastAPI应用程序。

bash 复制代码
FROM python:3.12-slim

# Install uv.
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/

# Copy the application into the container.
COPY . /app

# Install the application dependencies.
WORKDIR /app
RUN uv sync --frozen --no-cache

# Run the application.
CMD ["/app/.venv/bin/fastapi", "run", "app/main.py", "--port", "80", "--host", "0.0.0.0"]

构建Docker image:

bash 复制代码
docker build -t fastapi-app .

在本地运行Docker容器:

bash 复制代码
docker run -p 8000:80 fastapi-app

在浏览器中打开http://127.0.0.1:8000/?token=jessica进行验证和测试。

相关推荐
abigale035 小时前
LangChain 实践4 7-1 项目初始化 + 基础Model I/O
langchain·fastapi·uvicorn·提示词模板·输出解析器·model i/o
SilentSamsara12 小时前
SQLAlchemy 2.x:异步 ORM 与数据库迁移 Alembic 完整指南
开发语言·数据库·python·sql·青少年编程·oracle·fastapi
cooldream200913 小时前
使用 uv 管理 Python 虚拟环境:现代 Python 开发的高效实践
python·uv·mcp
BUG研究员_15 小时前
Web应用-FastAPI
python·fastapi
SilentSamsara15 小时前
FastAPI 实战:从路由定义到依赖注入的完整 REST API
开发语言·python·青少年编程·fastapi
玄米乌龙茶12316 小时前
Web 框架(FastAPI / Flask)核心概念
前端·flask·fastapi
H Journey17 小时前
python包和项目管理工具uv、conda介绍
python·conda·uv
kaico20181 天前
FastAPI 基础入门
fastapi
♡すぎ♡1 天前
二维 uv 与单位球面坐标的相互转化公式
计算机图形学·uv