「Pythonプロジェクトを作るたびにpython -m venv venvして、source venv/bin/activateして…この手順、もっと簡単にならないの?」そう思ったことはありませんか?
チーム開発で「僕の環境では動くけど…」という状況に遭遇したり、依存関係のインストールが遅すぎてイライラしたり。Pythonの開発環境構築って、意外と面倒ですよね。
そんな悩みを解決するのがuvです。Rust製の超高速パッケージマネージャーで、venv環境の手動作成が不要になり、チーム開発での依存関係共有が驚くほど簡単になります。この記事では、uvを使って実際にHello Worldを出力するまでの手順を、初心者の方でもわかるように解説します。
uvとは?venv不要の超高速Pythonパッケージマネージャー
uvは、Astral社が開発したRust製のPythonパッケージマネージャーです。従来のpipやPoetryと比べて、圧倒的な速度と使いやすさが特徴です。
公式サイト: https://docs.astral.sh/uv/
GitHub: https://github.com/astral-sh/uv
pipの10〜100倍速い依存関係解決
uvの最大の特徴は、その圧倒的な速度です。Rustで実装されているため、Pythonで書かれたpipと比較して依存関係の解決が10〜100倍高速です。大規模なプロジェクトで数十秒〜数分かかっていたパッケージインストールが、数秒で完了します。
venv環境構築の手間がなくなる
従来のPython開発では、プロジェクトごとに以下の手順が必要でした:
# 従来の面倒な手順
python -m venv venv
source venv/bin/activate # Windowsの場合: venv\Scripts\activate
pip install -r requirements.txtuvを使えば、この手順が大幅に簡略化されます。仮想環境の作成・アクティベートをuvが自動的に処理してくれるため、開発者は本質的なコーディングに集中できます。
チーム開発で依存関係を簡単に共有
uvはpyproject.tomlとuv.lockというファイルで依存関係を管理します。この2つのファイルをGitで共有するだけで、チームメンバー全員が完全に同じ環境を再現できます。
「Aさんの環境では動くけど、Bさんの環境ではエラーが出る」という問題が、ほぼ完全になくなります。
uvのインストール(3つの方法)
uvのインストール方法は、お使いのOSによって異なります。以下から自分の環境に合った方法を選んでください。
公式インストールガイド: https://docs.astral.sh/uv/getting-started/installation/
macOS/Linuxの場合
macOSまたはLinuxを使用している場合、以下のコマンドでインストールできます:
# curlを使用したインストール
curl -LsSf https://astral.sh/uv/install.sh | shHomebrewを使用している場合は、こちらの方法も使えます:
# Homebrewを使用したインストール
brew install uvWindowsの場合
Windowsを使用している場合、PowerShellで以下のコマンドを実行します:
# PowerShellで実行
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"または、pipを使ってインストールすることもできます:
# pipを使用したインストール(すべてのOS共通)
pip install uvインストール確認
インストールが完了したら、以下のコマンドでバージョンを確認しましょう:
# バージョン確認
uv --version
# 正常にインストールされていれば、以下のような出力が表示されます
# uv 0.5.15 (または最新バージョン)これでuvのインストールは完了です!
3分でHello World!uvで最初のPythonプロジェクト
それでは、実際にuvを使ってPythonプロジェクトを作成し、Hello Worldを出力してみましょう。たったの3ステップで完了します。
プロジェクト初期化(venv不要!)
まず、新しいプロジェクトを作成します。ここではhello-uvという名前のプロジェクトを作ってみます:
# プロジェクトの初期化
uv init hello-uv
# プロジェクトディレクトリに移動
cd hello-uvこれだけで、以下のファイルが自動的に作成されます:
pyproject.toml– プロジェクトの設定と依存関係を管理するファイルhello.py– サンプルのPythonファイルREADME.md– プロジェクトの説明ファイル
重要なポイント: この時点でpython -m venv venvのような仮想環境作成コマンドは一切不要です。uvが内部で自動的に管理してくれます。
Hello Worldスクリプト作成
自動生成されたhello.pyを開くと、すでにHello Worldのサンプルコードが入っています。念のため、内容を確認してみましょう:
# hello.py
def main():
print("Hello from hello-uv!")
if __name__ == "__main__":
main()もし自分でコードを書きたい場合は、このファイルを編集してください。例えば:
# hello.py - カスタマイズ例
def main():
print("Hello World!")
print("uvで作った最初のPythonプロジェクトです!")
if __name__ == "__main__":
main()実行してみる
それでは、作成したスクリプトを実行してみましょう。uvではuv runコマンドを使います:
# Pythonスクリプトを実行
uv run hello.py以下のような出力が表示されれば成功です!
Hello World!
uvで作った最初のPythonプロジェクトです!ポイント: source venv/bin/activateのような仮想環境のアクティベートは不要です。uv runが自動的に適切な環境で実行してくれます。
チーム開発で嬉しい!依存関係の共有方法
uvの真価は、チーム開発で発揮されます。依存関係の管理と共有が驚くほど簡単になります。
pyproject.tomlとuv.lockで環境を完全再現
uvは2つのファイルで依存関係を管理します:
- pyproject.toml – プロジェクトの基本設定と依存パッケージのリスト
- uv.lock – 各パッケージの正確なバージョンとハッシュ値を記録
例えば、requestsライブラリを追加してみましょう:
# パッケージの追加
uv add requestsこのコマンドを実行すると、pyproject.tomlに依存関係が追加され、uv.lockが自動生成されます。
pyproject.tomlの中身を見てみると、以下のように記録されています:
[project]
name = "hello-uv"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
"requests>=2.31.0",
]チームメンバーへの共有手順
プロジェクトをチームメンバーと共有する手順は非常にシンプルです:
- プロジェクト作成者側:
pyproject.tomlとuv.lockをGitにコミット
# プロジェクト作成者
git add pyproject.toml uv.lock
git commit -m "Add project dependencies"
git push- チームメンバー側: リポジトリをクローンして、たった1コマンドで環境構築完了
# チームメンバー
git clone https://github.com/your-team/hello-uv.git
cd hello-uv
# 依存関係を完全に再現してインストール
uv sync
# すぐに実行可能
uv run hello.pyuv syncコマンドは、uv.lockに記録された完全に同じバージョンの依存パッケージをインストールします。これにより、「僕の環境では動くけど…」問題が解決します。
従来のrequirements.txtとの違いは明確です:
- requirements.txt:
requests==2.31.0のように指定しても、サブ依存関係のバージョンが環境によって異なる可能性がある - uv.lock: すべての依存パッケージとサブ依存関係のバージョンとハッシュ値を完全に記録するため、100%同じ環境が再現される
uvの基本コマンド早見表
uvでよく使う基本コマンドをまとめました。この表を参考にすれば、日々の開発がスムーズになります。
コマンドリファレンス: https://docs.astral.sh/uv/reference/cli/
プロジェクト管理
| コマンド | 説明 | 使用例 |
|---|---|---|
uv init |
新規プロジェクト作成 | uv init my-project |
uv run |
Pythonスクリプト実行 | uv run main.py |
uv sync |
依存関係を同期 | uv sync |
パッケージ管理
| コマンド | 説明 | 使用例 |
|---|---|---|
uv add |
パッケージを追加 | uv add requests |
uv remove |
パッケージを削除 | uv remove requests |
uv lock |
uv.lockを更新 | uv lock |
uv tree |
依存関係をツリー表示 | uv tree |
仮想環境操作(自動管理)
uvは仮想環境を自動的に管理するため、手動での操作はほとんど不要です。ただし、明示的に操作したい場合のコマンドもあります:
| コマンド | 説明 | 使用例 |
|---|---|---|
uv venv |
仮想環境を明示的に作成 | uv venv |
uv pip install |
pip互換のインストール | uv pip install numpy |
uv pip list |
インストール済みパッケージ一覧 | uv pip list |
ほとんどの場合、uv addとuv runだけで十分です。仮想環境の作成やアクティベートは意識する必要がありません。
pipとの違い・venv手動作成との比較
uvと従来のpip+venvの組み合わせを比較してみましょう。実際の開発体験がどれだけ変わるか、具体的に見ていきます。
速度比較
実際にパッケージをインストールする速度を比較すると、差は歴然です。例えば、Django、requests、numpy、pandasなど、よく使う10個のパッケージをインストールする場合:
| ツール | インストール時間 | 備考 |
|---|---|---|
| pip | 約45秒 | 従来の方法 |
| Poetry | 約30秒 | 依存関係解決が遅い |
| uv | 約3〜5秒 | 10倍以上高速 |
この速度差は、日々の開発で大きな影響を与えます。パッケージを追加するたびに待たされるストレスがなくなり、開発のリズムが途切れません。
開発体験の違い
従来のpip+venvとuvの開発体験を具体的に比較してみましょう:
従来のpip+venv:
# 新規プロジェクト作成の手順
mkdir my-project && cd my-project
# 仮想環境を作成
python -m venv venv
# 仮想環境をアクティベート
source venv/bin/activate # Windowsの場合は異なる
# パッケージをインストール
pip install requests numpy pandas
# requirements.txtを作成
pip freeze > requirements.txt
# スクリプトを実行
python main.py
# 別のプロジェクトに移動する時
deactivate
cd ../another-project
source venv/bin/activate # また手動でアクティベートuvの場合:
# 新規プロジェクト作成から実行まで
uv init my-project && cd my-project
# パッケージをインストール(自動でpyproject.toml/uv.lockに記録)
uv add requests numpy pandas
# スクリプトを実行(自動で適切な環境を使用)
uv run main.py
# 別のプロジェクトに移動する時
cd ../another-project
uv run main.py # アクティベート不要、自動で環境切り替え手順の数が大幅に減り、環境のアクティベート/ディアクティベートを意識する必要がなくなります。
どんな時にuvを使うべき?
uvは以下のような状況で特に効果を発揮します:
- チーム開発: 依存関係の完全な再現性が重要な場合
- 複数プロジェクトの並行開発: プロジェクト間の切り替えが頻繁にある場合
- CI/CD環境: インストール時間を短縮したい場合
- 大規模プロジェクト: 依存パッケージが多く、インストール時間がネックになっている場合
- Python初心者: venvの仕組みを理解する前に、まずは開発を始めたい場合
逆に、以下のような場合は従来のpipでも問題ありません:
- 一時的なスクリプトやテスト
- 依存パッケージがほとんどない小規模プロジェクト
- 既存プロジェクトでpip+requirementsが確立されており、移行コストが高い場合
Python開発をさらに効率化する関連記事
uvでPython環境管理をマスターしたら、他の開発ツールや環境構築手法も学んで、さらに効率的な開発環境を構築しましょう:
環境管理・構築ツール
- Python開発初級者へ。venvもいいけどDocker便利やぞ!環境管理の悩みを5ステップで解決する – venvの限界を感じたら、Dockerで完全に独立した環境を構築する方法を学びましょう
- miseとは?package.jsonとの違いを初心者向けに徹底解説 – Node.js、Python、Goなど複数言語のバージョン管理を一元化できるmiseの使い方
Python開発スキル
- 【Python初心者向け】OpenCVとは?画像処理の基本から実践まで – uvで環境を整えたら、OpenCVで画像処理プロジェクトに挑戦してみましょう
開発効率化ツール
- opencode – ターミナル向けAIコーディングエージェント!複数モデル対応で柔軟な開発支援を実現 – ターミナル上でAI支援を受けながらコーディング効率を向上させるツール
- Cipher by Byterover – AIコーディング支援のための共有メモリー管理プラットフォーム – チーム開発でのコーディング履歴を自動記録・管理し、知識共有を促進するプラットフォーム
まとめ:uvで快適なPython開発環境を手に入れよう
この記事では、uvを使ってvenv不要のPython開発環境を構築し、Hello Worldを実行するまでの手順を解説しました。
uvの主なメリット:
- venv環境の手動作成・アクティベートが不要
- pipの10〜100倍速いパッケージインストール
- pyproject.tomlとuv.lockでチーム開発の環境共有が簡単
- プロジェクト間の切り替えが自動的に処理される
従来のpip+venvに慣れている方は、最初は戸惑うかもしれません。しかし、一度uvの快適さを体験すると、もう手放せなくなるはずです。
「venvのアクティベートを忘れてシステムPythonにパッケージをインストールしてしまった…」「チームメンバーの環境で動かない…」こんな悩みから解放されましょう。
今日からuvを使って、より効率的で快適なPython開発を始めてみませんか?
公式ドキュメント: https://docs.astral.sh/uv/
