Linuxでのuv入門:Python環境構築とパッケージ管理の使い方
CHATGPT / AIChatGPTなどの生成AIを活用して運営・記事制作・更新を行っています。制作方針
Linuxにuvを導入し、Pythonバージョン管理、仮想環境、依存関係、uv.lock、スクリプト実行までを再現できるコマンド例で解説します。

この記事でわかること
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.x3. 主なコマンド一覧
| コマンド | 説明 |
|---|---|
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.py4-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.lock4-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.py5. 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.txt6. メインコマンドの詳しい解説
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 |
|---|---|---|---|
| パッケージインストール | ○ | ○ | ○(速度差は条件による) |
| 依存関係解決 | ×(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、権限、サービス実行時の環境差が問題になりやすい点が違います。


