Python uv よくあるパターン:依存関係・uvx・スクリプト実行
3 min read
この記事は日常開発で最もよく行う 5 つの操作に焦点を当て、すぐに使える操作テンプレートを提供します。これらのパターンをマスターすれば 8 割のシナリオに対応できます — 残りの 2 割は上級編で。
パターン 1:依存関係の追加と削除
# 依存関係を追加
uv add requests
uv add "requests>=2.31,<3" # バージョン制約付き
# 開発用依存関係(テスト・lint・型チェック)
uv add --dev pytest ruff mypy
# 削除
uv remove requestsuv add は pyproject.toml・uv.lock・.venv を同時に更新 — 一コマンドで完結。
パターン 2:uv run でプロジェクト内コマンドを実行
プロジェクト内のスクリプト・CLI・テストは、常に uv run を使いましょう:
uv run python main.py
uv run pytest
uv run ruff check .
uv run mypy src/activate は不要、Python の使い間違いも心配なし。
パターン 3:uvx で独立した CLI ツールを実行
ツールを一時的に実行したい、プロジェクトに追加したくない?uvx(uv tool run と同等)を使う:
# 随時実行、使い捨て
uvx ruff check .
uvx pycowsay "hello uv"
# バージョンを指定
uvx ruff@0.5.0 check
# パッケージ名とコマンド名が異なる場合
uvx --from httpie http https://httpbin.org/getuvx はプロジェクトを汚染せずに一時的な環境を作って実行します — 試食するだけでパッケージ全部は買わないような感覚。「ちょっと試したい」という場面に最適。
パターン 4:スクリプトのインライン依存関係(PEP 723)
単一スクリプト、プロジェクトを作りたくない?インラインスクリプトメタデータを使う:
# /// script
# dependencies = ["requests", "rich"]
# ///
import requests
from rich.pretty import pprint
r = requests.get("https://api.github.com/zen")
pprint(r.text)uv add --script fetch.py requests rich
uv run fetch.pyまたは一行で:
uv run --with requests --with rich fetch.pyパターン 5:requirements.txt からの移行
既存プロジェクトに requirements.txt がある?直接取り込む:
uv add -r requirements.txtまたはロックファイルにコンパイルしてから同期:
uv pip compile requirements.in -o requirements.txt
uv pip sync requirements.txt移行後は pyproject.toml を主ソースとして扱い、requirements.txt はエクスポート用として使えます。
次のステップ
日常パターンの練習が終わったら、Python バージョン切り替え・pip インターフェース・monorepo を試してみましょう: 👉 高度な使い方