Skip to content

uv

FastAPI の前に Python 開発環境を整える。


uv のインストール

基本的には uv を使ってセットアップしていく。
uv はインストールが必要なので、 https://docs.astral.sh/uv/getting-started/installation/ にある通りにインストールしておく。

  • macOS を使ってるなら下記のコマンドを実行
    curl -LsSf https://astral.sh/uv/install.sh | sh
    
    source $HOME/.local/bin/env
    
  • インストールできたか確認
    uv --version 
    

プロジェクトの作成と初期化

uv が使えるようになったら、プロジェクトフォルダを作成して移動しておく。

mkdir my-fastapi-app && cd my-fastapi-app

プロジェクトの初期化

uv init

Python のバージョン指定

Python のバージョンを指定するときは下記のようにオプションをつければ OK 。

uv init --python 3.13

初期化後は下記のファイルとディレクトリが作成される

.git
.gitignore
.python-version
main.py
pyproject.toml
README.md

Note

もし、 Git で管理しないプロジェクトなら .git ディレクトリを削除しておけば OK 。


Python パッケージのインストール例

これ以降は uv コマンドを使って Python パッケージをインストールする。 FastAPI をインストールしてみる。

uv add "fastapi[standard]"

仮想環境を有効化しなくても OK

python コマンドとか、 uv で追加したパッケージのコマンドを実行する時は、 uv run を先頭につければ実行できる。

# (例)
% fastapi --version
zsh: command not found: fastapi
% uv run fastapi --version
FastAPI CLI version: 0.0.24

パッケージを追加すると、 pyproject.toml が更新されて、 uv.lock が作成されるので、この 2 つのファイルもソースコードと一緒に GitHub とかにあげておけば、他の人が同じ環境を構築するときとか、デプロイするサーバーに同じ環境を構築するときに使える。

uv sync コマンド

uv sync コマンドを使うと、 pyproject.toml のパッケージ一覧を元に、 uv.lock の内容を反映した仮想環境を構築できるので、 uv さえインストールしておけば同じ環境を構築できる。

uv sync

キャッシュ

uv はダウンロードしたパッケージやビルド済みの wheel を、プロジェクト横断の共有キャッシュに貯めておいて、 2 回目以降のインストールを速くしてる。場所は uv cache dir で確認できる: cf. Caching

% uv cache dir
/Users/alice/.cache/uv

使ってるうちに地味に大きくなるので、サイズが気になったら du で見られる。

% du -sh $(uv cache dir)
2.3G    /Users/alice/.cache/uv

uv cache size は実験的

uv cache size でもサイズ(バイト数)が見られるけど、これは実験的(preview)なコマンドで、実行すると「experimental and may change without warning」っていう警告が出る。

% uv cache size
warning: `uv cache size` is experimental and may change without warning. Pass `--preview-features cache-size` to disable this warning.
2469606195

uv cache prune を使うと、もう使われていない古いキャッシュだけを安全に掃除できる(今の環境で参照してるものは残る)。

% uv cache prune
Pruning cache at: .cache/uv
Removed 30986 files (635.2MiB)

% du -sh $(uv cache dir)
1.6G    /Users/alice/.cache/uv

全部消すなら uv cache clean

uv cache prune は不要なものだけを消すけど、 uv cache clean はキャッシュを丸ごと全部消す。特定のパッケージだけ消したいときは uv cache clean <パッケージ名> でいい。