Linuxでの「uv」Pythonパッケージマネージャーの使い方まとめ

Linuxでの uv(Pythonパッケージマネージャー)の使い方まとめ

1. uvとは

uvAstral社(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.tomluv.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

コメント

タイトルとURLをコピーしました