Python uv 高度な実務:Python バージョン・pip インターフェース・ツールインストール
3 min read
要求が「動けばいい」から「マルチバージョンテスト・既存パイプラインとの互換性・全域ツール管理」に変わっても、uv は対応できます。この記事はソロダンジョンからチームレイドへのアップグレードです。
Python バージョン管理
uv は Python のダウンロードと管理が組み込まれています — pyenv を別途インストールする必要はありません。
# 複数バージョンをインストール
uv python install 3.10 3.11 3.12
# プロジェクトのバージョンを固定(.python-version を生成)
uv python pin 3.11
# 特定バージョンで venv を作成
uv venv --python 3.12
# 特定バージョンで実行
uv run --python 3.10 pytestバージョンを初めて使う際は自動ダウンロード — 以降はキャッシュからすぐ使えます。
pip 互換インターフェース
既存の CI・Docker・スクリプトがまだ pip を使っている?uv がドロップイン置き換えを提供:
# pip install -r requirements.txt と同等
uv pip install -r requirements.txt
# requirements をコンパイル(クロスプラットフォーム・再現可能)
uv pip compile requirements.in --universal -o requirements.txt
# 環境を同期(ロックファイルに厳密に従う)
uv pip sync requirements.txt
# venv を作成
uv venvuv pip に切り替えると、パラメータはほぼ同じで速度が一桁違います — 自転車からオートバイに乗り換えるようなもの:道は同じ、体験は全然違う。大きな変更を避けてレガシープロジェクトをアップグレードしたい?まず uv pip に変えるだけで痛みなく飛躍します。
全域ツールインストール(uv tool)
よく使うツールを毎回 uvx で実行したくない?全域インストールする:
uv tool install ruff
uv tool install httpie
# 以降は直接呼び出せる
ruff check .
http https://httpbin.org/get単一ツールまたは全ツールをアップグレード:
uv tool upgrade ruff
uv tool upgrade --all
uv tool installは独立した環境を作成するので、プロジェクトの依存関係と衝突しません。プロジェクトでバージョン固定が必要なツールは、引き続きuv add --devを使ってください。
スクリプトロックファイルと shebang
単一スクリプトも再現可能にしたい?依存関係をロックできます:
uv lock --script example.pyexample.py.lock が生成されます。uv run example.py を実行するとこのロックファイルが使われます。
または実行ファイルにする:
#!/usr/bin/env -S uv run --script
# /// script
# dependencies = ["httpx"]
# ///
import httpx
print(httpx.get("https://example.com"))chmod +x fetch
./fetch次のステップ
高度な機能を習得したら、指針でリスクを抑えましょう: 👉 ベストプラクティス