概要
uv は、Python環境のインストールや管理、依存関係の同期を劇的に簡単にする 次世代ツール。 Astral 社が開発し、 Rust製 で圧倒的な高速性を誇る。 仮想環境管理、依存解決、Pythonバージョン固定 など、すべてを一括で高効率に実現。 uvx コマンドで、即座にツール利用や一時的な環境構築も可能。 Pythonエコシステムにおける 10年ぶりの革新 と呼べる存在。
uv:Pythonエコシステム最大の革新
- uv は、Pythonの インストール・仮想環境管理・依存解決 を一手に担う新ツール
- Astral 社製、 Ruff などで知られる開発チームによる信頼性
- Rust で実装されており、従来ツールよりも 圧倒的な高速性 を実現
- クロスプラットフォーム対応 (Linux、Mac、Windows)
uvの主な機能
- 任意の Pythonバージョンの自動インストール
- パッケージの高速導入 および依存関係の自動解決
- 仮想環境の自動作成・管理
- 依存関係の衝突解決 を迅速に実行(大規模プロジェクトに最適)
インストール方法
- Linux/Mac:
curl -LsSf https://astral.sh/uv/install.sh | sh
- Windows(PowerShell):
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
- 既存のPython環境に影響を与えず、 安全に試用可能
プロジェクト管理と仮想環境
- 仮想環境 の利用を推奨、uvは自動で仮想環境を構築
- pyproject.toml を基に環境構築、依存関係やPythonバージョンを明示
- pyproject.toml 例:
[project] name = "my_project" version = "1.0.0" requires-python = ">=3.9,<3.13" dependencies = [ "astropy>=5.0.0", "pandas>=1.0.0,<2.0", ] - プロジェクト公開時も pyproject.toml が標準
新規プロジェクト作成
uv initで プロジェクト雛形 を自動生成uv init --bare:pyproject.tomlのみ生成uv init --package:Pythonパッケージ用雛形生成uv init --helpで全オプション確認
既存プロジェクトでの利用
-
uv syncで 依存解決・仮想環境構築 を一括実行- Python本体・依存パッケージ を自動インストール
.venvディレクトリに仮想環境を作成- uv.lock で完全な依存バージョンを保存し、再現性を担保
-
仮想環境のアクティベート不要
uv run <コマンド>で自動的に適切な仮想環境で実行- 例:
uv run myscript.py、uv run jupyter lab
- 例:
依存関係の追加・管理
- pyproject.toml を手動編集可、uvが自動検出し環境を再構築
uv add numpy>=2.0で 依存関係を即時追加・バージョン指定も可能- リモート依存やローカルパッケージ にも対応(詳細は公式ドキュメント参照)
Pythonバージョンの固定
uv python pin 3.12.9で 特定バージョンに固定- チーム全体で 完全一致のPython環境 を再現可能
uvx:一時的なツール実行
uvx(uv toolの短縮)で 一時的な仮想環境+ツール実行- 例:
uvx ruffでRuffを即座に実行 - キャッシュ利用 で2回目以降は超高速
- 例:
- 追加依存を指定して即座に起動
- 例:
uvx --with pandas,pyarrow ipythonでpandas付きIPythonを即起動 uvx jupyter labでJupyter Labを一時環境で起動
- 例:
- 用途例 :一時的なデータ調査、コードリント、ノートブック閲覧など
導入事例と開発現場での価値
- The Astrosky Ecosystem 開発での実体験
- 複数OS・複数開発者・非同期作業でも 環境統一が容易
- GitHub Actions でのCI/CDや本番サーバーでもuvを活用
- 実験的依存や頻繁なバージョン変更 にも柔軟対応
- 一貫性と信頼性 を高める基盤として機能
まとめ:uvがPythonエコシステムを変える理由
- インストール・依存管理・仮想環境の一元化 による圧倒的な効率化
- 超高速・高信頼性 で開発体験を刷新
- 学習コストが低く、既存環境を壊さない安全性
- uvx による柔軟なツール利用で、初心者から上級者まで幅広く支持
さらに知りたい方へ
- uv公式ドキュメント で詳細なガイド・コマンドリファレンス・概念解説を提供
- Getting Startedページ や実践的な使い方も充実