これまでPythonの環境構築といえば、pyenv でPythonのバージョンを管理し、venv や virtualenv で仮想環境を作り、pip でパッケージを入れる……というのが定番でした。あるいは Poetry を使っている方も多いでしょう。
しかし、Rust製のツール uv がアップデートにより「Python自体のバージョン管理」にも対応したことで、uvだけで全てが完結するようになりました。しかも、爆速です。
今回は、pyenvからuvへ乗り換える際に知っておくと便利なコマンドを、用途別にまとめました。
なぜ uv に乗り換えるのか?
- 圧倒的に速い: コマンドの実行速度が桁違いです。
- All-in-One: Pythonのインストール、仮想環境、パッケージ管理、ツール実行(pipx相当)がこれ1本。
- ディスク容量の節約: プロジェクト間でパッケージをリンクして使い回すため、ストレージに優しい。
pyenv ユーザーのための uv コマンド対応表
まずは、これまで pyenv でやっていた操作が uv でどうなるのか、対応表で見てみましょう。
| 目的 | pyenv コマンド | uv コマンド | 備考 |
|---|---|---|---|
| 利用可能バージョンの確認 | pyenv install --list |
uv python list --only-downloads |
インストール可能なものを表示 |
| インストール済み確認 | pyenv versions |
uv python list |
|
| Pythonのインストール | pyenv install 3.12.0 |
uv python install 3.12 |
3.12系最新が入ります |
| プロジェクトのバージョン指定 | pyenv local 3.12.0 |
uv python pin 3.12 |
.python-version ファイルが生成されます |
| 仮想環境の作成 | python -m venv .venv |
uv venv |
自動でプロジェクトのPythonを使用 |
こうして見ると、直感的に移行できることがわかります。
用途別 uv コマンドチートシート
1. Python のバージョン管理
uvは、必要に応じてPythonを自動でダウンロードしてくれますが、明示的に管理することも可能です。
# 特定のバージョンのPythonをインストール
uv python install 3.12
# インストールされているPythonの一覧
uv python list
# 古くなったPythonバージョンを削除(掃除)
uv python uninstall 3.11
2. プロジェクトの初期化と管理(Poetryのような使い方)
最近のモダンな開発フローでは、uv init から始めるのが基本です。
# プロジェクトの作成(カレントディレクトリ)
uv init
# 依存パッケージの追加(pip install に相当)
uv add requests
uv add flask
# 開発用パッケージの追加
uv add --dev pytest black
# 依存関係の同期(lockファイルの内容をvenvに反映)
uv sync
uv add を実行すると、自動的に仮想環境(.venv)が作られ、pyproject.toml と uv.lock が更新されます。
3. スクリプトやツールの実行
仮想環境を source .venv/bin/activate で有効化しなくても、uv run を使えばその環境で実行できます。
# プロジェクトの環境でスクリプトを実行
uv run main.py
# 登録したコマンドを実行(例: pytest)
uv run pytest
4. グローバルツールの実行 (pipx の代替)
pipx のように、CLIツールを一時的に実行したり、インストールしたりする機能も強力です。uvx というエイリアスが便利です。
# インストールせずにツールを一時実行 (uv tool run のエイリアス)
uvx ruff check .
uvx cowsay "Hello uv!"
# ツールをシステムにインストール
uv tool install black
pyenv からの移行ステップ
すでに pyenv を使っている場合、以下の手順でスムーズに移行できます。
- uv のインストール:
Mac/Linux:curl -Ls https://astral.sh/uv/install.sh | sh - シェルの設定変更:
.zshrcや.bashrcにあるpyenv initなどの記述を削除またはコメントアウトします。 - プロジェクトでの切り替え:
既存のプロジェクトディレクトリでuv initし、uv python pin <version>でバージョンを指定し直します。
まとめ
uv は単なるパッケージインストーラーから、Python開発の統合マネージャーへと進化しました。「pyenv + venv + pip」や「Poetry」を使っている方は、ぜひ一度 uv を試してみてください。その速さと手軽さに、きっと戻れなくなるはずです。