Linuxでのuv入門:Python環境構築とパッケージ管理の使い方

CHATGPT / AIChatGPTなどの生成AIを活用して運営・記事制作・更新を行っています。制作方針

Linuxにuvを導入し、Pythonバージョン管理、仮想環境、依存関係、uv.lock、スクリプト実行までを再現できるコマンド例で解説します。

Linuxでuvを中心にPython管理、依存同期、再現実行を循環させる図解

この記事でわかること

Linux環境でuvを使ってPythonプロジェクトを作る流れを、導入から依存関係管理までまとめた記事です。

  • Linuxでuvをインストールする方法
  • プロジェクト作成と仮想環境の扱い
  • 依存関係を再現しやすくする考え方

おすすめ読者: Linuxサーバーや開発環境でPythonを扱う人、pip/venvからuvへ移行したい人。

読む前の注意: コマンド、ライブラリ、モデルの仕様は環境やバージョンで変わります。実行前に手元の環境と公式情報を確認してください。

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

1. uvとは

uv は Astral社(Ruff開発チームも同社)によってRust言語で開発された、超高速なPythonのパッケージマネージャーおよびプロジェクト管理ツールです。

uvはproject管理、package操作、Python管理、CLI tool実行など複数の機能を提供します。既存のpip、Poetry、pyenvなどのすべての機能や設定をそのまま置き換えるとは限りません。

  • 公式サイト: https://docs.astral.sh/uv/
  • GitHubリポジトリ: https://github.com/astral-sh/uv
  • 開発言語: Rust

主な特徴

特徴説明
速度並列処理やcacheを活用します。pipとの速度差は処理内容、環境、cacheの有無で変わるため、同じ条件で比較します
複数の機能を統合Python、仮想環境、依存関係、スクリプトに関連する機能を提供。操作は用途別のuv subcommandで行う
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 installpip互換インターフェースでパッケージをインストール
uv venv仮想環境を作成
uv buildパッケージのビルド(source distribution / wheel)
uv cache cleanキャッシュをクリア
uv self updateuv自体を更新

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/uvuvのグローバルキャッシュ
~/.local/share/uv/credentials認証情報(プレーンテキストの場合)
$XDG_DATA_HOME/uv/credentials認証情報の保存先(XDG準拠)
プロジェクト直下の .venv/仮想環境ディレクトリ
プロジェクト直下の uv.lockロックファイル
プロジェクト直下の .python-versionPythonバージョンの指定

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. との比較

項目pipPoetryuv
パッケージインストール○○○(速度差は条件による)
依存関係解決×(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プロジェクト・package管理ツールです。Linuxでは公式インストーラーまたはHomebrewなどから導入できます。

Pythonバージョン管理、仮想環境作成、依存関係解決、スクリプト実行に対応したsubcommandを提供します。既存ツールから移行する場合は設定と互換性を確認してください。

典型的なワークフローは以下の4ステップです:

uv init          # プロジェクト作成
uv add <pkg>     # パッケージ追加
uv sync          # 環境同期
uv run <script>  # スクリプト実行

uvはpip互換interfaceのほか、projectやPython、CLI toolを扱う機能も提供します。Poetryやpyenvなどの設定をそのまま移せるわけではないため、移行時は対応範囲を確認してください。


参考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
  • 公式資料(migration、benchmarks、installer、storage)確認日 2026-10-02: migration、benchmarks、installer、storage

よくある質問

uvはpipやvenvの代わりになりますか?

多くの場面で代替できます。プロジェクト単位の依存関係管理や環境再現をまとめて扱いやすいのが利点です。

サーバーで使うときの注意点は?

ユーザー権限、PATH、systemdやcronから実行する場合の環境変数を確認してください。

Macの記事と何が違いますか?

Linuxではサーバー運用、PATH、権限、サービス実行時の環境差が問題になりやすい点が違います。

表を拡大

左右にスワイプして読めます