uvインストール¶
数年前までは、Poetry、Pipenv、pyenvを組み合わせて使うことが多かったでしょう。
uv登場により、1つのツールでこれらを置き換えることができるようになりました。
今後、uvの利用がデファクトスタンダードとなっていくでしょう。
uvとは¶
公式では下記の表現がされています。
An extremely fast Python package and project manager, written in Rust.
意訳すると「Rustで実装された超高速なPythonパッケージ&プロジェクトの管理をするツール」と解釈できます。
実際にPythonで開発を行うときには、下記のような様々な管理が必要となります。
- 仮想環境の管理: Pythonの仮想環境を作成し管理
- プロジェクト管理: プロジェクトにおける様々な設定の管理
- パッケージ管理: プロジェクトで利用する外部パッケージ(ライブラリ)の管理
- Pythonバージョン管理: 各プロジェクトごとに必要なPythonバージョンの管理
uvが登場する以前は、様々なツールを組み合わせてこれらを実現する必要があり、ツールのデファクトスタンダードもなかなか固まらず、とても煩雑でした。 uvを用いると、1つのツールでこれら全てを扱うことができ、Python開発における煩わしさを一掃してくれる存在です。 まだ登場して日が浅いですが、急速にPython開発における必須ツールとして成長しています。
uv登場以前のツール群
venvモジュール
Pythonの標準モジュールです。 後述するPoetryやPipEnvを用いない場合、Pythonの仮想環境は自分自身で作成し管理する必要がありました。
下記は、.venvという名前で仮想環境を作成し、有効化する例です。
Poetry、PipEnv
venvの管理、パッケージの管理、プロジェクトの管理を行うツールです。
uv登場以前によく比較されて語られていましたが、Poetryの方がユーザ数が多く流行っている印象でした。
Pythonのバージョン管理を行う機能はないため、後述するpyenvと併用されました。
pyenv
Pythonのバージョン管理を行うツールです。
Nodeで言うnvm、n、voltaのような存在です。
Rye
uvの前身と言えるツールです。Rye
プログラミング言語 Rust
システムプログラミング向けのモダンなプログラミング言語で、下記の特徴があります。
- メモリ安全性
- C/C++言語においてバグとなりやすいメモリ管理(
malloc、freeなどで実装する部分)について、所有権とライフタイムという概念を用いることでコンパイル時点で安全性を保証します
- C/C++言語においてバグとなりやすいメモリ管理(
- 実行速度
- C/C++言語と肩を並べる実行速度で、プログラミング言語の中でも最速と言えます
昨今、様々な開発用ツールがRust実装により高速化されることが多く、uvもその流れの1つと言えるでしょう。
どれくらい高速か
公式ページに、類似ツールとの速度比較の下記グラフが載っています。

2つめのPoetryはuv登場以前にデファクトスタンダードとして利用されてきたツールです。 10〜100倍高速であることがわかります。
uvインストール¶
下記のページを参考に、インストールしていきましょう。
Windows¶
スタンドアローンインストーラ¶
下記でuvをインストールします。
Info
インターネットから取得したスクリプトを実行するため、PowerShellの実行ポリシーをByPassと指定しています。
パッケージマネージャ¶
Windows上でパッケージマネージャを利用している場合は、下記でもインストールできます。
WinGet:
Scoop:
macOS / Linux¶
Homebrew¶
下記でuvをインストールします。
スタンドアローンインストーラ¶
その他のインストール方法
いずれも、詳細は公式ページをご参照ください。
Pythonがインストール済みの場合
pipx、pipを用いてインストールできます。
Cargoがインストール済みの場合
uvはRustで実装されているため、ソースコードから直接ビルドしてインストールできます。
Docker
公式でDockerイメージが提供されています。
実行ファイルを直接ダウンロード
GitHubリリースとしてビルド済みバイナリが配置されており、ダウンロードして利用できます。
スタンドアローンインストーラを用いた場合のuvのアップグレード¶
パッケージマネージャを使わずにスタンドアローンでインストールした場合、uvのバージョンは自身で管理する必要があります。
uvのバージョンが更新された際に、下記コマンドで手動アップデートを行います。