高速パッケージマネージャ uvのススメ
仮想環境に venv
や conda
を使い、パッケージ管理は主に pip
を利用しているかと思います。この記事では、新たな選択肢として注目されている高速パッケージマネージャ uv を紹介します。
uvとは?
uv は、Rustで書かれた高速かつ安全なPython向けパッケージマネージャで、従来の pip
や virtualenv
を置き換えることを目的として作られています。
uvの特長は以下の通りです。
- 高速な依存関係の解決(Rust製でスピードが段違い)
- キャッシュを効率的に使うことで、パッケージインストールを大幅に高速化
- PEP582対応で、プロジェクト内にパッケージを管理することも可能
uvと既存技術(venv, pip)の違い
項目 | venv + pip | uv |
---|---|---|
仮想環境の作成 | python -m venv |
uv venv |
パッケージ管理 | pip install |
uv pip install |
依存関係管理 | requirements.txt |
pyproject.toml + requirements.lock
|
速度 | 通常速度 | 非常に高速 |
キャッシュ機構 | 一般的 | 強力(再インストールが高速化) |
uvは従来のワークフローをほぼそのまま維持しつつ、スピードと信頼性を向上させたツールです。
uvは誰が作ったのか?
uvはPython開発ツールのエコシステムで注目されている astral.sh によって作られています。astral.sh は他にも高速Pythonリンターとして有名な Ruff や、モダンなPython開発環境の PDM を開発しているチームです。
uvの使い方の例
実際の使用例を見てみましょう。
仮想環境を作る
uv venv
source .venv/bin/activate
パッケージをインストール
uv pip install numpy pandas
インストールしたパッケージを確認
uv pip list
インストールしたパッケージをrequirements.txtに書き出す
uv pip freeze > requirements.txt
pyproject.tomlを使った依存関係の管理(応用編)
以下のようなシンプルな pyproject.toml
を作成しておけば、
[project]
name = "myproject"
version = "0.1.0"
dependencies = [
"numpy",
"pandas"
]
uvで簡単に依存関係を同期できます。
uv sync
良く使うuvのコマンドまとめ
コマンド | 説明 |
---|---|
uv venv |
仮想環境を作成 |
uv pip install <pkg> |
パッケージをインストール |
uv pip uninstall <pkg> |
パッケージをアンインストール |
uv pip list |
パッケージの一覧表示 |
uv pip freeze |
requirements.txt 形式で出力 |
uv sync |
pyproject.toml に従ってパッケージを同期 |
uv cache clear |
キャッシュをクリア |
まとめ
uvを使えば、普段のPython開発の速度を劇的に向上させられます。venv
や pip
に慣れているエンジニアこそ、その恩恵を感じやすいはずです。ぜひuvを試して、その快適さを実感してみてください!