10月30日、Emily Space氏が「uv is the best thing to happen to the Python ecosystem in a decade」と題した記事を公開した。この記事では、Pythonのインストールや仮想環境の管理、依存関係の同期といった長年の課題を一変させる新ツール「uv」について詳しく紹介されている。以下に、その内容を紹介する。
 
 Python環境管理を一新する「uv」
「uv」は、Pythonツール群を開発するスタートアップAstralによって開発されたオープンソースの新ツールである。同社は高性能リンター「Ruff」でも知られており、今回のuvも同様にRustで実装された高速なPython管理ツールだ。
uvは次のような機能を備えている。
- Pythonのバージョンを自動でインストール
- パッケージのインストールと依存関係の解決
- 仮想環境の作成と管理
- 依存関係の衝突を極めて高速に解決
著者は「uvはこれらすべてを他のどのツールよりも優れて実行できる」と述べており、その速度と安定性が際立っているという。
インストール方法
uvのインストールは極めて簡単である。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"
インストール後は uv コマンドが使用可能になる。既存のPython環境を破壊することもないため、安心して導入できるのが特徴だ。
プロジェクトごとのPython管理
uvは標準的な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",
]
このファイルを配置したディレクトリで uv sync を実行すると、uvは以下を自動的に行う。
- 有効なPythonバージョンをインストール
- .venvディレクトリに仮想環境を構築し依存関係をインストール
- すべてのパッケージの厳密なバージョン情報を記録した uv.lockを生成
このロックファイルにより、同僚が同一の環境を正確に再現できるようになる。
また、環境を有効化せずとも uv run を用いてスクリプトを実行できる点も特徴だ。たとえば通常は
source .venv/bin/activate
python myscript.py
とするところを、uvでは
uv run myscript.py
とするだけでよい。Jupyter Labの起動も同様に uv run jupyter lab で可能だ。
新規プロジェクトの作成
新しいプロジェクトを開始する場合は、次のコマンドを実行する。
uv init
これにより pyproject.toml、README.md などの基本ファイルが自動生成される。用途に応じて uv init --bare(最小構成)や uv init --package(Pythonパッケージ構成)などのオプションも利用できる。
依存関係の追加とPythonバージョンの固定
依存関係を追加する際は、手動でファイルを編集せず次のように実行できる。
uv add numpy>=2.0
このコマンドは pyproject.toml を自動で更新し、環境を再構築する。また、特定のPythonバージョンをプロジェクトに固定するには次のようにする。
uv python pin 3.12.9
これにより、全ての開発者が同一のPython 3.12.9環境を使用できる。
一時的なツール実行 — uvx
uvのもう一つの強力な機能が、ワンオフでツールを実行する uv tool(略称 uvx)である。これは仮想環境を気にせず、必要なツールを即座に実行できる。
uvx ruff
と入力すれば、コードリンターのRuffを自動的にダウンロードし、一時的な環境で実行する。キャッシュを利用するため、二回目以降は非常に高速だ。
例えば、pandasとpyarrowをインストールした状態でIPythonを起動する場合は次のようにする。
uvx --with pandas,pyarrow ipython
同様に、Jupyter Labをすぐに立ち上げたい場合も簡単だ。
uvx jupyter lab
チーム開発における利点
著者は、自身が関わるオープンソースプロジェクト「The Astrosky Ecosystem」でuvを導入した経験を紹介している。複数の開発者が異なるOS上で作業する環境下でも、uvを利用することで全員が完全に同一のPython環境を再現できたという。
その結果、依存関係の不整合や環境構築のトラブルがほぼ解消され、GitHub Actionsでの自動テスト実行や本番サーバー環境の管理にも統一性が生まれた。著者は「Pythonエコシステムにおける過去10年で最も重要な革新だ」と評価している。
詳細はuv is the best thing to happen to the Python ecosystem in a decadeを参照していただきたい。
