uv - 新たな Python パッケージ、プロジェクト、および環境マネージャー
Python uvの優れた点
Python uv(「ユーヴィー」と発音)は、Rustで書かれた現代的で高パフォーマンスなPythonのパッケージおよびプロジェクト管理ツールです。pip、pip-tools、virtualenv、pipx、pyenvといった従来のPythonパッケージ管理ツールに置き換えられる設計となっており、Python開発ワークフローの簡素化と高速化を目的としています。
uvは、人気のPythonリンターであるRuffを開発したチームAstralによって開発されており、Rustのパフォーマンスと現代的なソフトウェアアーキテクチャを活用することで、Pythonエコシステムにおける一般的な課題(インストールの遅さ、依存関係の競合、複雑な環境管理など)を解決するように設計されています。

uvの主な機能
- 卓越した速度: uvは従来のツールよりも著しく速く、キャッシュなしでpipの8〜10倍、ウォームキャッシュ状態で最大80〜115倍の高速性を発揮します。
- オールインワンツール: パッケージのインストール、依存関係の解決、仮想環境の管理、Pythonバージョン管理、プロジェクトの足場作り、スクリプトの実行を1つのツールに統合しています。
- 互換性: pip互換のコマンドラインインターフェースを提供しているため、急な学習コストなしに導入しやすくなっています。
- 堅牢な依存関係管理: 再現可能な環境のために、正確な依存関係の解決とロックファイルのサポートを提供します。
- 仮想環境の自動作成: 仮想環境を自動的に作成・管理し、手動でのセットアップを削減します。
- クロスプラットフォームサポート: macOS、Linux、Windowsで動作します。
- スタンドアロンインストール: PythonやRustなしで、シンプルなインストーラーや
curlを使用してインストール可能です。

なぜuvを使うのか、まだ迷っていますか?
- パフォーマンス: パッケージのインストール時間や依存関係の解決時間を劇的に短縮します。
- シンプルさ: 複数のツールを1つに統合し、プロジェクトのセットアップと管理を効率化します。
- 信頼性: 明確なエラーメッセージと競合解決により、一貫性があり再現可能な環境を提供します。
- モダンな標準: プロジェクト設定のために
pyproject.tomlをサポートし、現在のPythonパッケージング標準に準拠しています。
使用例
少しエキサイティングなことを試してみましょう!
- 新規プロジェクトの開始:
uv init myproject
cd myproject
uv add requests
uv run python script.py
これにより、プロジェクトディレクトリが作成され、仮想環境がセットアップされ、依存関係がインストールされ、スクリプトが隔離された環境で実行されます。
- インライン依存関係によるスクリプト管理:
uv add --script script.py requests
uv run script.py
uvは、個別のrequirementsファイルなしで、単一ファイルのスクリプトの依存関係も管理できます。
従来のツールとの比較
| 機能 | uv | pip/virtualenv | Poetry |
|---|---|---|---|
| 速度 | 非常に速い | 遅い | 中程度 |
| 仮想環境 | 自動 | 手動 | 自動 |
| 依存関係の解決 | 高度 | 基本的 | 高度 |
| Pythonバージョン管理 | あり | なし (pyenvが必要) | なし |
| ロックファイルサポート | あり | なし (pip-toolsが必要) | あり |
| スクリプト実行 | 統合 | なし | 限定的 |
システムにUVをインストールして使い始める方法
システムにuvをインストールして使い始めるには、以下のシンプルな手順に従ってください。
インストール
- スタンドアロンインストーラー(推奨)
- Linux/macOS:
curl -LsSf https://astral.sh/uv/install.sh | sh
または、wgetを好む場合:
wget -qO- https://astral.sh/uv/install.sh | sh
- Windows (PowerShell):
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
- 特定バージョンのインストール: URLにバージョンを指定することで、特定バージョンのインストールを要求できます。例:
https://astral.sh/uv/0.7.15/install.sh
- 代替手段: pip経由でのインストール(Pythonがインストールされている場合)
pip install uv
注: この方法は、システム全体のアクセスには推奨されません。何をしているのかを明確に理解している場合を除き、システムPython環境を散乱させる可能性があるためです。
- pipx経由でのインストール(隔離された、ユーザー全体のインストールのために)
pipx install uv
既にpipxを使用している場合、グローバルアクセスのためにこの方法の方がクリーンです。
始める
インストールの確認 - 以下のコマンドを実行します:
uv
uvがインストールされ、使用準備が整っていることを確認するためのヘルプメニューが表示されるはずです。
仮想環境の作成とアクティブ化
- venvの作成:
uv venv test
- Linux/macOSでのアクティブ化:
source test/bin/activate
- Windowsでのアクティブ化:
.\test\Scripts\activate
これで、この環境にパッケージをインストールするためにuv pip install を使用できます。
新規プロジェクトの初期化
uv init
これにより、プロジェクト用のpyproject.tomlと.gitignoreが作成されます。
依存関係の追加
パッケージを追加します:
uv add
これにより、pyproject.tomlが更新され、ロックファイルが生成/更新されます。
依存関係の同期
環境内のすべての依存関係をインストールします:
uv sync
または、pip互換インターフェースを使用します:
uv pip install
これにより、ロックファイルに従ってすべての依存関係がインストールされることを保証します。
スクリプトの実行
以下を使用します:
uv run script.py
これにより、スクリプト用の環境と依存関係が自動的に管理されます。
シェル統合(オプション)
よりスムーズなワークフローのために、.zshrcまたは.bashrcにシェル統合を追加することで、デフォルトの仮想環境を自動的にアクティブにし、pipをuv pipにエイリアスすることができます。
これらの手順により、uvがインストールされ、スピードと手軽さを持ってPythonプロジェクトを管理できるようになります。
特定のPythonバージョンのインストール
uvを使用することで、特定のPythonバージョンをインストールし、プロジェクトのために管理できます。
- 最新の安定版Pythonバージョンのインストール:
このコマンドは、利用可能な最新の安定版Pythonバージョンをダウンロードしてインストールします。uv python install - 特定バージョンのインストール:
これは、Python 3.12の最新のパッチリリース(例: 3.12.3)をインストールします。uv python install 3.12 - 正確なパッチバージョンのインストール:
これは、正確にPython 3.12.3をインストールします。uv python install 3.12.3 - 複数バージョンのインストール:
これは、Python 3.9、3.10、3.11をインストールします。uv python install 3.9 3.10 3.11 - 制約条件に一致するバージョンのインストール:
これは、プロジェクトのPythonバージョン要件を変更します。uv python install '>=3.8,=3.11"
追加の注意点
自動ダウンロード: デフォルトでは、システムに見つからない場合、uvは必要なPythonバージョンを自動的にダウンロードしてインストールします。
システムPython: 存在する既存のPythonインストールを使用することもできますし、--no-managed-pythonフラグを使用してシステムPythonの使用を強制することもできます。
アップグレード: uvが管理するPythonバージョンを最新のパッチリリースにアップグレードするには、以下を使用できます:
uv python upgrade 3.12
または、インストールされているすべてのバージョンをアップグレードします:
uv python upgrade
マイナーバージョン間のアップグレード(例: 3.12から3.13へ)はサポートされていません。
まとめると、uvは、プロジェクト内で特定のPythonバージョンをインストールし、管理し、使用するための柔軟で強力なツールを提供します。
UVは異なるシステムで利用可能なPythonインタープリターをどのように発見するのか
UVは、一連の定義されたロケーションをチェックし、各候補にそのバージョンメタデータを照会することで、異なるシステムで利用可能なPythonインタープリターを発見します。以下はその仕組みです:
- UVが管理するPythonインストール:
UVはまず、UV_PYTHON_INSTALL_DIR環境変数で指定されたディレクトリを参照し、そこに保存された自身で管理するPythonバージョンを確認します。 - システムPATH:
macOSおよびLinuxでは、UVはシステムPATHにリストされたディレクトリ内で、python、python3、またはpython3.x(xはバージョン番号)という名前の実行可能ファイルを確認します。Windowsでは、python.exeを探します。 - Windows固有のロケーション:
Windowsでは、UVはWindowsレジストリと、py --list-pathsの出力を使用して、Microsoft StoreのPythonインタープリターもチェックします。 - 仮想環境:
仮想環境がアクティブになっているか指定されている場合、UVはその他の場所を探す前に、その環境内のインタープリターが互換性があるかどうかを確認します。 - メタデータクエリ:
発見された各実行可能ファイルにそのバージョンメタデータがクエリされます。要求されたバージョン(またはバージョン制約)に一致する実行可能ファイルのみが考慮されます。非実行可能ファイルは無視されます。 - 優先順位とフォールバック:
デフォルトでは、UVはシステムPythonインストールを優先しますが、オプションを使用して管理対象を優先したり、管理対象/システムバージョンのみを使用するように調整できます。適切なインタープリターが見つからない場合、UVは必要なバージョンをダウンロードしてインストールできます。
この堅牢な発見プロセスにより、UVは異なるオペレーティングシステムや環境間で、正しいPythonインタープリターを確実に特定し、使用することができます。