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ディレクトリ内で次のコマンドを実行します:
This creates a project with an application layout
and a pyproject.toml file.これにより、アプリケーションレイアウトのプロジェクトとpyproject.tomlファイルが作成されます。
Then, add a dependency on FastAPI:次に、FastAPIへの依存関係を追加します:
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ファイルの内容は次のようになります:
[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 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を使用できます:
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イメージをビルドします:
Run the Docker container locally with:Dockerコンテナをローカルで実行するには:
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ガイドを参照してください。