Linuxでの uv(Pythonパッケージマネージャー)の使い方まとめ
1. uvとは
uv は Astral社(Ruff開発チームも同社)によってRust言語で開発された、超高速なPythonのパッケージマネージャーおよびプロジェクト管理ツールです。
pip, pip-tools, pipx, poetry, pyenv, twine, virtualenvなどの複数のツールを1つに統合したオールインワンのツールとして設計されています。
- 公式サイト: https://docs.astral.sh/uv/
- GitHubリポジトリ: https://github.com/astral-sh/uv
- 開発言語: Rust
主な特徴
| 特徴 | 説明 |
|---|---|
| 圧倒的な速度 | pipの10〜100倍の高速性。仮想環境の作成は50倍高速、パッケージインストールは5〜40倍高速 |
| オールインワン | Pythonバージョン管理・仮想環境・依存関係解決・スクリプト実行がすべて1つのコマンドで完結 |
| Rust実装 | CPython拡張に依存しないスタンドアロンバイナリ。PythonやRustの事前インストール不要 |
| 標準準拠 | PEP 621に基づく pyproject.toml を採用、Cargo風のワークスペース対応 |
| クロスプラットフォーム | macOS, Linux, Windows で一貫したロックファイル(uv.lock)を使用 |
| ディスク効率 | グローバルキャッシュとClone-on-Write (CoW)リンクで依存関係の重複を排除 |
2. Linuxへのインストール方法
方法1: 公式インストーラー(推奨)
curl -LsSf https://astral.sh/uv/install.sh | sh
または wget を使う場合:
wget -qO- https://astral.sh/uv/install.sh | sh
注意: インストール後、新しいターミナルウィンドウを開くか
source ~/.bashrc/source ~/.zshrcを実行してPATHを反映してください。
方法2: Homebrew経由(Linuxでも利用可能)
brew install uv
方法3: pip経由(Pythonが既に入っている場合)
pip install uv
# または
pipx install uv
インストール後の確認
uv --version
# 例: uv 0.7.x
3. 主なコマンド一覧
| コマンド | 説明 |
|---|---|
uv |
ヘルプ表示 |
uv init |
新しいプロジェクトを作成(pyproject.tomlを自動生成) |
uv add |
依存パッケージを追加(pyproject.tomlとuv.lockを自動更新) |
uv remove |
依存パッケージを削除 |
uv sync |
プロジェクトの環境を同期(uv.lockに基づいてパッケージをインストール/更新) |
uv lock |
ロックファイル(uv.lock)を更新 |
uv run |
コマンドやスクリプトを実行(仮想環境を自動作成・アクティブ化) |
uv export |
ロックファイルを別の形式(例: requirements.txt)にエクスポート |
uv tree |
依存関係の木を表示 |
uv python list |
インストール済みのPythonバージョン一覧 |
uv python install |
特定のPythonバージョンをインストール |
uv python pin |
プロジェクトで使用するPythonバージョンを固定 |
uv pip install |
pip互換インターフェースでパッケージをインストール |
uv venv |
仮想環境を作成 |
uv build |
パッケージのビルド(source distribution / wheel) |
uv cache clean |
キャッシュをクリア |
uv self update |
uv自体を更新 |
4. Linuxでの基本的な使い方
4-1. プロジェクトの作成・初期化
# 新しいプロジェクトを作成
uv init myproject
cd myproject
# 以下が自動生成される:
# pyproject.toml(メタデータ)
# .python-version(Pythonバージョンの指定)
# main.py(starterスクリプト)
4-2. Pythonバージョンの管理
# インストール可能なPythonバージョンの一覧を表示
uv python list
# 特定のバージョンをインストール
uv python install 3.12
uv python install 3.11
# プロジェクトで使用するPythonバージョンを固定
uv python pin 3.12
# .python-versionファイルに書き込まれる
4-3. 仮想環境の作成・アクティベート
# 仮想環境を作成(.venvディレクトリが自動生成)
uv venv
# Linux/macOSでのアクティベーション
source .venv/bin/activate
# パッケージのインストール
pip install flask
# アクティベーション解除
deactivate
省略形:
uv run python script.pyで仮想環境の自動作成・アクティベートを同時に実行可能。
4-4. パッケージの依存関係管理(uvプロジェクト方式)
# パッケージを追加(pyproject.tomlとuv.lockが自動更新される)
uv add requests
uv add "fastapi>=0.100.0"
uv add "django~=4.2"
# 環境を同期
uv sync
# スクリプトを実行(仮想環境が自動で作成され、依存関係が同期される)
uv run main.py
4-5. pip互換インターフェースの使用
既存の pip ワークフローから移行する場合:
# 単一パッケージのインストール
uv pip install flask
# requirements.txtからのインストール
uv pip install -r requirements.txt
# パッケージのアップグレード
uv pip install --upgrade flask
# インストール済みパッケージの一覧表示
uv pip list
# requirements.txtの生成
uv pip freeze > requirements.txt
# 依存関係の解決(ロックファイル生成)
uv pip compile requirements.txt -o requirements.lock
# ロックファイルに基づいて環境を同期
uv pip install -r requirements.lock
4-6. スクリプトの実行
# 基本的な実行(仮想環境が自動で有効化される)
uv run main.py
# Pythonスクリプトの引数を渡す
uv run python script.py --arg value
# または
uv run main.py arg1 arg2
# 異なるPythonバージョンを指定して実行
uv run --python 3.11 main.py
5. uvプロジェクトでの典型的なワークフロー(Linux)
# 1. プロジェクト作成
uv init myproject
cd myproject
# 2. パッケージ追加
uv add requests beautifulsoup4
# 3. 環境の同期
uv sync
# 4. スクリプト実行(仮想環境が自動で有効化される)
uv run main.py
# 5. 依存関係を更新したい場合
uv add "requests>=2.31.0"
uv sync # uv.lockを更新して環境を再同期
# 6. 別の環境へエクスポート
uv export > requirements.txt
6. メインコマンドの詳しい解説
uv init — プロジェクト作成
uv init myproject # プロジェクト作成
cd myproject
以下のファイルが自動生成されます:
– pyproject.toml — PEP 621準拠のプロジェクトメタデータ
– .python-version — プロジェクトのPythonバージョン指定
– main.py — starterスクリプト
uv add — 依存関係の追加
uv add requests # 単一パッケージ
uv add "fastapi>=0.100.0" # バージョン指定
uv add "django~=4.2" # 互換バージョン指定
uv add black pytest --group test # グループ指定(dev依存)
pyproject.tomlに自動で記録uv.lockにロックファイルが生成・保存
uv sync — 環境の同期
uv sync # uv.lockに基づいて.venvを同期
uv lock # ロックファイルのみを更新(環境は変更しない)
uv run — コマンド実行
uv run python script.py # スクリプト実行
uv run pytest # テスト実行
uv run --python 3.12 flask run # 特定のPythonバージョンで実行
- 仮想環境がなければ自動作成
uv.lockの更新があれば自動同期
uv python — Pythonバージョン管理
uv python list # インストール済み/利用可能な一覧
uv python install 3.12 # 特定バージョンをインストール
uv python pin 3.12 # プロジェクトでの使用バージョンを固定
uv python find ">=3.10,<3.13" # 条件に合うPythonを検索
uv pip — pip互換インターフェース
uv pip compile requirements.txt -o requirements.lock # 依存関係解決+ロック
uv pip install -r requirements.lock # ロックから環境を作成
uv pip sync requirements.txt # 環境をrequirements.txtに同期
uv venv — 仮想環境作成
uv venv # .venvディレクトリに仮想環境を作成
uv venv --python 3.11 # 特定Pythonバージョンで仮想環境を作成
source .venv/bin/activate # Linuxでのアクティベート
7. メインコマンド(追加・まとめ)
uv add — 依存関係の追加(追加)
uv add requests # 単一パッケージ
uv add "fastapi>=0.100.0" # バージョン指定
uv add "django~=4.2" # 互換バージョン指定
uv add black pytest --group test # グループ指定(dev依存)
pyproject.tomlに自動で記録uv.lockにロックファイルが生成・保存
uv sync — 環境の同期
uv sync # uv.lockに基づいて.venvを同期
uv lock # ロックファイルのみを更新(環境は変更しない)
uv run — コマンド実行
uv run python script.py # スクリプト実行
uv run pytest # テスト実行
uv run --python 3.12 flask run # 特定のPythonバージョンで実行
- 仮想環境がなければ自動作成
uv.lockの更新があれば自動同期
8. uvのディレクトリ構造(Linux)
| パス | 説明 |
|---|---|
~/.cache/uv |
uvのグローバルキャッシュ |
~/.local/share/uv/credentials |
認証情報(プレーンテキストの場合) |
$XDG_DATA_HOME/uv/credentials |
認証情報の保存先(XDG準拠) |
プロジェクト直下の .venv/ |
仮想環境ディレクトリ |
プロジェクト直下の uv.lock |
ロックファイル |
プロジェクト直下の .python-version |
Pythonバージョンの指定 |
9. Linux特有の設定・注意点
Shell completion(自動補完)
# Bash
uv generate-shell-completion bash > /etc/bash_completion.d/uv
# Zsh
uv generate-shell-completion zsh > ~/.zsh/_uv
source ~/.zsh/_uv
パッケージ管理ツールでのインストール
# Ubuntu/Debian apt経由(公式リポジトリが利用可能な場合)
sudo apt install uv
# Fedora
sudo dnf install uv
推奨: 公式インストーラーによるスタンドアロンバイナリの導入が最も確実です。パッケージマネージャー経由はバージョンが古い可能性があります。
10. pip/poetry/etc. との比較
| 項目 | pip | Poetry | uv |
|---|---|---|---|
| パッケージインストール | ○ | ○ | ○(10-100倍高速) |
| 依存関係解決 | ×(pip-tools併用) | ○ | ○ |
| プロジェクト管理 | × | ○ | ○ |
| Pythonバージョン管理 | × | × | ○ |
| virtualenv | 別 | 内蔵 | 内蔵 |
| スクリプト実行 | △ | △ | ○ |
| クロスプラットフォームロック | × | ○ | ○ |
| インストールの容易さ | pip自体が必要 | Poetry本体必要 | standaloneバイナリのみ |
11. Dockerでの活用例
FROM python:3.12-slim
RUN curl -LsSf https://astral.sh/uv/install.sh | sh
WORKDIR /app
COPY pyproject.toml uv.lock ./
RUN /root/.local/bin/uv sync --frozen --no-install-project
COPY . .
RUN /root/.local/bin/uv sync --frozen
CMD ["/root/.local/bin/uv", "run", "python", "main.py"]
12. まとめ
uv はRustで実装された超高速のPythonパッケージマネージャーです。Linuxでは公式インストーラー(curl | sh)またはHomebrewで導入可能です。
1つのコマンドで Pythonバージョン管理・仮想環境作成・依存関係解決・スクリプト実行 までを一元化できます。
典型的なワークフローは以下の4ステップです:
uv init # プロジェクト作成
uv add <pkg> # パッケージ追加
uv sync # 環境同期
uv run <script> # スクリプト実行
pipの代替としてのみならず、Poetryやpyenvなど複数のツールを統合するAll-in-Oneソリューションとして期待されています。
参考URL
- 公式サイト(ドキュメント): https://docs.astral.sh/uv/
- GitHubリポジトリ: https://github.com/astral-sh/uv
- インストールガイド: https://docs.astral.sh/uv/getting-started/installation/
- CLIコマンドリファレンス: https://docs.astral.sh/uv/reference/cli

コメント