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 requests

uv addpyproject.tomluv.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 ツールを実行

ツールを一時的に実行したい、プロジェクトに追加したくない?uvxuv tool run と同等)を使う:

# 随時実行、使い捨て
uvx ruff check .
uvx pycowsay "hello uv"
 
# バージョンを指定
uvx ruff@0.5.0 check
 
# パッケージ名とコマンド名が異なる場合
uvx --from httpie http https://httpbin.org/get

uvx はプロジェクトを汚染せずに一時的な環境を作って実行します — 試食するだけでパッケージ全部は買わないような感覚。「ちょっと試したい」という場面に最適。

パターン 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 を試してみましょう: 👉 高度な使い方