Skip to content

Using uv with FastAPIFastAPIでのuvの使用

FastAPI is a modern, high-performance Python web framework. You can use uv to manage your FastAPI project, including installing dependencies, managing environments, running FastAPI applications, and more.FastAPIは、モダンで高性能なPythonウェブフレームワークです。 uvを使用して、依存関係のインストール、環境の管理、FastAPIアプリケーションの実行など、FastAPIプロジェクトを管理できます。

Note注意

You can view the source code for this guide in the uv-fastapi-example repository.このガイドのソースコードは、uv-fastapi-exampleリポジトリで見ることができます。

Migrating an existing FastAPI project既存のFastAPIプロジェクトの移行

As an example, consider the sample application defined in the FastAPI documentation, structured as follows:例として、次のように構成されたサンプルアプリケーションを考えてみましょう。 FastAPIドキュメントに定義されています。

project
└── app
    ├── __init__.py
    ├── main.py
    ├── dependencies.py
    ├── routers
    │   ├── __init__.py
    │   ├── items.py
    │   └── users.py
    └── internal
        ├── __init__.py
        └── admin.py

To use uv with this application, inside the project directory run:このアプリケーションでuvを使用するには、projectディレクトリ内で次のコマンドを実行します:

$ uv init --app

This creates a project with an application layout and a pyproject.toml file.これにより、アプリケーションレイアウトのプロジェクトpyproject.tomlファイルが作成されます。

Then, add a dependency on FastAPI:次に、FastAPIへの依存関係を追加します:

$ uv add fastapi --extra standard

You should now have the following structure:これで、次の構造が得られるはずです:

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

And the contents of the pyproject.toml file should look something like this:そして、pyproject.tomlファイルの内容は次のようになります:

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

From there, you can run the FastAPI application with:そこから、次のコマンドでFastAPIアプリケーションを実行できます:

$ uv run fastapi dev

uv run will automatically resolve and lock the project dependencies (i.e., create a uv.lock alongside the pyproject.toml), create a virtual environment, and run the command in that environment.uv runはプロジェクトの依存関係を自動的に解決しロックします(つまり、pyproject.tomlと同じ場所にuv.lockを作成し)、仮想環境を作成し、その環境内でコマンドを実行します。

Test the app by opening http://127.0.0.1:8000/?token=jessica in a web browser.ウェブブラウザでhttp://127.0.0.1:8000/?token=jessicaを開いてアプリをテストします。

Deploymentデプロイメント

To deploy the FastAPI application with Docker, you can use the following Dockerfile:DockerでFastAPIアプリケーションをデプロイするには、次のDockerfileを使用できます:

Dockerfile
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"]

Build the Docker image with:次のコマンドでDockerイメージをビルドします:

$ docker build -t fastapi-app .

Run the Docker container locally with:Dockerコンテナをローカルで実行するには:

$ docker run -p 8000:80 fastapi-app

Navigate to http://127.0.0.1:8000/?token=jessica in your browser to verify that the app is running correctly.ブラウザでhttp://127.0.0.1:8000/?token=jessicaに移動して、アプリが正しく実行されていることを確認してください。

Tipヒント

For more on using uv with Docker, see the Docker guide.Dockerでuvを使用する方法の詳細については、Dockerガイドを参照してください。