uvというツールを耳にしたことはありますか?
2024年に登場したこのRust製のPythonのパッケージマネージャが、開発者の間で注目になっています。ようやく従来のpipやvenvに慣れ親しんだというのに…🙄「新しいツールって本当に必要?」なんだろうかというちょっと嫌な見方をしてしまうのです。
詳細に関しては別の方が詳しいエントリーを作成されていると思うのでそちらに譲るとして、
今回はuvとはどんなものなのか、従来のツールとどう違うのか、そしてどんな場面で役立つのかを調べてみました。
参考
uvとは?
uvは、Astral社が開発したPython向けのパッケージ&プロジェクト管理ツールです。
主な特徴
- Rust製で非常に高速
- pip互換のコマンド体系
- 仮想環境管理も可能
簡単に言えば、「pip・venv・pyenvの機能を統合し、更に高速になったオールインワンツール」といえるのではないかと思います。
従来のツールとの比較
基本的なコマンド比較
| 操作 | 従来(venv + pip) | uv(高速化版) |
|---|---|---|
| 仮想環境作成 | python3 -m venv .venv |
uv venv .venv |
| 環境有効化 | source .venv/bin/activate |
source .venv/bin/activate |
| パッケージインストール | pip install requests |
uv pip install requests |
| requirements使用 | pip install -r requirements.txt |
uv pip install -r requirements.txt |
| パッケージ一覧 | pip freeze |
uv pip freeze |
一見すると使い方はほとんど同じですが、内部的には大きな違いがあります。
機能面の違い
| 機能 | pip + venv | uv |
|---|---|---|
| 処理速度 | 標準的 | 10-100倍高速 |
| Python本体管理 | pyenvなど別途必要 | pyenv的機能内蔵(自動DL) |
| 依存関係の固定 | requirements.txt | uv.lock(自動生成) |
| プロジェクト設定 | 複数ファイル | pyproject.toml中心 |
| 互換性 | Python標準 | pip完全互換 |
uvの特徴
圧倒的な高速化
特に大量のパッケージやCI/CD環境で威力を発揮します。
統合された管理
# プロジェクト作成から実行まで一貫して管理 $ uv init my-project $ cd my-project $ uv add requests pandas # 本番用依存 $ uv add --dev pytest # 開発用依存 $ uv run python main.py # 仮想環境を意識せず実行
確実な再現性
uv.lockファイルで依存関係を固定- チーム開発やCI/CDで「環境の差異」による影響を減少
Python本体からパッケージまで一元管理
# Python本体のインストール(pyenv的機能) $ uv python install 3.11 $ uv python install 3.12 # プロジェクトごとに異なるPythonバージョンを指定 $ uv venv --python 3.11 # 3.11環境 $ uv venv --python 3.12 # 3.12環境 # プロジェクト内でpyenvのような切り替えも可能 $ uv python pin 3.11 # このプロジェクトは3.11を使用
uvを試してみる
インストール方法
# 公式インストーラ(推奨) $ curl -LsSf https://astral.sh/uv/install.sh | sh # パスを通す $ export PATH="$HOME/.local/bin:$PATH" # .bashrcにパスを通す処理を追加 $ echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc $ source ~/.bashrc

簡単な動作確認
# バージョン確認 $ uv --version

# 新しいプロジェクトで試してみる $ uv init test-project $ cd test-project $ uv add requests $ uv run python -c "import requests; print('uvでrequestsが使えました!')"


# これまでの仮想環境を試してみる $ mkdir pip-project $ cd pip-project $ uv venv $ source .venv/bin/activate $ uv pip install requests $ python -c "import requests; print('uvでrequestsを導入しました!')"

uv pip installとuv addの使い分けの方法
uvはモダンなアプローチと既存の高速化の2つのタイプのパッケージ管理ができます。
このあたりがちょっとわかりにくいです。
| アプローチ | 使用コマンド | 管理ファイル | 使用場面 | 記録方法 |
|---|---|---|---|---|
| モダン方式 | uv add |
pyproject.toml + uv.lock |
新規プロジェクト | 自動記録 |
| 従来方式 | pip install + 手動管理 |
requirements.txt |
既存プロジェクト、既存環境 | 手動記録 |
| uv従来互換 | uv pip install + 手動管理 |
requirements.txt |
既存環境の高速化 | 手動記録 |
| 一時的 | uv pip install |
なし | 実験、検証、一時的な検証 | 記録なし |
おわりに
uvはpipの置き換えというより、Pythonパッケージ管理の新しい選択肢として考えるのがよさそうです。
新しいプロジェクトや効率化を求める場面では、uvを試してみる価値は十分にあります。一方で、現在のワークフローが問題なく動いているなら、無理に変更する必要もないこともあるでしょう。