使用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进行验证和测试。

相关推荐
Li emily8 小时前
如何通过外汇API平台快速实现实时数据接入?
开发语言·python·api·fastapi·美股
没事儿写两篇14 小时前
Python 包管理工具-uv
python·uv·开源包管理工具
曲幽17 小时前
FastAPI部署中间件实战:从CORS到自定义,让你的API更健壮
python·fastapi·web·cors·starlette·middleware·call_next
dangfulin2 天前
fastapi+sqlalchemy实现一对一、一对多、多对多关系数据操作
fastapi
龙腾AI白云2 天前
【基于Transformer的人工智能模型搭建与fine-tuning】
scikit-learn·fastapi
叼奶嘴的超人3 天前
手动创建Docker版Fastapi CI/CD镜像文件
ci/cd·docker·fastapi
regret~3 天前
【笔记】Ant Design+FastAPI 项目 Linux 服务器内网部署完整笔记
服务器·笔记·fastapi
regret~3 天前
【笔记】Ant Design(含Umi Max)+FastAPI 内网部署&接口代理 核心笔记
笔记·fastapi
全栈测试笔记4 天前
FastAPI系列(12):响应模型参数
开发语言·python·fastapi
lambert.wang4 天前
当使用 uv 下载 Python 解释器时出现异常,通常是因为网络连接问题导致无法从 GitHub 下载安装包
python·github·uv