Pythonの仮想環境|venv/poetry/uvの違いを比較

プログラミング言語

Pythonの仮想環境管理は、プロジェクトごとに依存ライブラリを分離するための必須スキルです。venv・poetry・uvといった代表的なツールにはそれぞれ特徴があります。本記事では、3つの違いと選び方を解説します。

3つのツールの位置付け

  • venv:Python標準。最小限の仮想環境作成
  • poetry:依存解決・パッケージ管理・ビルドまで一貫
  • uv:Rust製の超高速インストーラ+プロジェクト管理(Astral社)

venvの基本

python -m venv .venv
source .venv/bin/activate     # Mac/Linux
.venv\Scripts\activate         # Windows
pip install requests
pip freeze > requirements.txt

標準ライブラリで完結する代わりに、依存解決やバージョン管理は手動です。

poetryの基本

# プロジェクト初期化
poetry new my-app
# 依存追加
poetry add requests
poetry add --group dev pytest
# 実行
poetry run python main.py
poetry shell

pyproject.toml + poetry.lockで依存をロックし、配布パッケージのビルドにも対応。長年Pythonの標準的なエコシステムを担ってきました。

uvの基本

# インストール
curl -LsSf https://astral.sh/uv/install.sh | sh

# プロジェクト作成
uv init my-app
cd my-app

# 依存追加(爆速)
uv add requests
uv add --dev pytest

# 実行
uv run python main.py

pip比で10〜100倍速いと言われる依存解決と、Pythonバージョン管理(pyenv相当)まで内包する次世代ツールです。

項目別比較

  • 速度:uv ≫ poetry > venv+pip
  • 機能:poetry/uv(依存解決・lock・スクリプト・ビルド)> venv
  • 標準化:venvは標準、poetryは事実上の標準、uvは急速に普及中
  • Python本体管理:uvが一括で可能

選び方の指針

  • 新規プロジェクト・速度重視:uv
  • 既存poetryプロジェクト:poetryを継続(uvにも段階的移行可能)
  • シンプルなスクリプト・教育用途:venv + pip

その他の選択肢

  • pipenv:かつての主流(最近は更新緩慢)
  • conda:データサイエンス向け(非Pythonバイナリも管理)
  • pyenv:Pythonバージョン管理(uvが取り込み中)

まとめ

Python仮想環境はvenv(標準)→ poetry(包括的)→ uv(高速・将来性)と進化してきました。2026年の新規プロジェクトはuvが第一候補。既存資産がある場合はpoetryを使い続けつつ、移行タイミングを見極めるのが現実的です。