みなさん、こんにちは。
前回は「pyenv+venv」を使ったPython開発環境の構築方法をご紹介しました。
今回はその続編として、最近じわじわと注目を集めている新しいツール「uv」についてご紹介します。
uvを使うと何が変わるのか、そして「pyenv+venv」と比べてどう違うのか、詳しく見ていきましょう!
uvって、一体どんなツール?
uv
は、あの有名な Rye
を開発している Astral
社が作った、Python向けの新世代ツールです。これまでの開発環境構築でバラバラに使っていた複数の機能を、uv
ひとつでまとめて扱えるのが最大の特徴なんです。
具体的には、uv
はこんなことができます。
- Pythonバージョンの管理
- 仮想環境(venvに相当)の作成と切り替え
- パッケージ管理(pipに相当)
- lockファイルによる依存関係の固定
つまり、これまで「pyenv」「venv」「pip」とそれぞれコマンドを使い分けていた作業が、uv
のたった一つのコマンド体系で完結するということです!これはシンプルで嬉しいですね。
uvのインストール方法
uv
はRust製で、単一のバイナリファイルなのでインストールもとっても簡単です!
Linux / macOSの場合
公式のインストーラを使うのが一番手軽です。
curl -LsSf https://astral.sh/uv/install.sh | sh
インストール後、uv
コマンドを使えるようにパスを通す必要があります。.bashrc
や.zshrc
に以下の行を追記してください。
export PATH="$HOME/.cargo/bin:$PATH"
Windowsの場合
PowerShellを開いて、次のコマンドを実行します。
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
インストールの確認
インストールが無事にできたら、バージョンを確認してみましょう。
uv --version
これで準備は完了です!
uvを使ったワークフローを見てみよう
実際にuv
を使ってPythonの開発環境を構築する流れを見てみましょう。
1. Pythonのバージョンをインストール
uv
自体にPythonのバージョン管理機能が備わっています。
# Python 3.11をインストール
uv python install 3.11
2. プロジェクトで使うPythonバージョンを指定
プロジェクトディレクトリに移動し、そこで使うPythonのバージョンを固定します。これにより、プロジェクトのルートディレクトリに.python-version
ファイルが作成されます。
# プロジェクトディレクトリに移動
cd my-project
# このプロジェクトで使うバージョンを指定
uv python pin 3.11
3. 仮想環境を作成
プロジェクトのルートディレクトリで、以下のコマンドを実行するだけです。uv
は .python-version
ファイルを読み取って、指定されたバージョンのPythonで仮想環境を作成します。
uv venv
これで、.venv
フォルダが作成され、プロジェクト専用の仮想環境が完成します。venv
コマンドを使う必要はありません。また、uv venv
を実行すると自動的に仮想環境が有効化されるため、source .venv/bin/activate
といった手動での有効化も不要です。
4. パッケージ管理
仮想環境が有効化された状態で、uv
のパッケージ管理機能を使います。
# パッケージのインストール
uv pip install requests numpy
# 依存関係をrequirements.txtに保存
uv pip freeze > requirements.txt
さらに、uv lock
コマンドを使えばlock
ファイルを生成でき、より厳密で再現性の高い環境を構築することも可能です。
「pyenv+venv」と「uv」を比較!
ここで、「pyenv+venv」と「uv」それぞれの特徴を表で比較してみましょう。
項目 | pyenv+venv | uv |
Pythonバージョン管理 | pyenvが担当 | uv単体で可能 |
仮想環境 | venvで作成 | uv venv で作成 |
パッケージ管理 | pip | uv の高速pip互換 |
セットアップ手順 | 3つのツールを組み合わせる必要あり | uv ひとつで完結 |
速度 | 標準的 | Rust製で高速 |
エコシステムの成熟度 | 非常に安定、利用者多数 | 新しいツール、事例は増えつつある |
どちらを使うべき?
どちらのツールにもメリットがあるので、状況に合わせて使い分けるのが賢い選択です。
「pyenv+venv」が向いている人
- ラズパイなど、既存の環境に合わせてPythonバージョンを柔軟に切り替えたい方
- すでに多くの実績があり、安定したツールを使いたい方
- チームやCI/CD環境ですでに
pyenv
が前提になっている方
「uv」が向いている人
- 新しいプロジェクトを立ち上げる方
- 開発環境の構築をなるべくシンプルにしたい方
- 依存解決やパッケージインストールの高速さを体感したい方
まとめ
pyenv+venv
は、長年の実績と安定性が魅力です。特にラズパイなど特定の環境に合わせる必要がある場合に力を発揮します。
一方、uv
は新世代の統合ツールとして登場し、簡単なインストールと高速な動作が特徴です。開発環境の構築がよりシンプルになります。
私のおすすめは、
- 納品用や既存のプロジェクトは「pyenv+venv」
- 新しい開発や検証環境は「uv」
と、状況に応じて使い分ける方法です。
私自身は、既存プロジェクトはpyenv+venv
で安定運用しつつ、新しいプロジェクトや生成AI関連の検証環境ではuv
を使ってみようと思っています。
この情報が皆さんの開発環境構築の参考になったら嬉しいです。
本日も最後までお読みいただきありがとうございました。
それでは、よいPythonライフを!