Python 環境で泣かない!Windows で uv を使った Python ベストプラクティス

こんにちは、「Python 環境がまた壊れた...」を何度も経験してきたやまぱんです 😅

補足コメントや質問、いいね、拡散、ぜひお願いします 🥺!
間違っていたら 優しく 教えてください!


Contents

こんな経験ありませんか?

  • 「pip install したら別のパッケージが動かなくなった」
  • 「Python のバージョンがいつの間にか変わってた」
  • 「VS Code が謎の Python を参照してる」
  • 「仮想環境を作ったはずなのにグローバルに入ってしまった」
  • 「新しい PC にしたら環境構築で 1 日溶けた」

私も全部経験しました。 Windows の Python 環境は本当に壊れやすい。

でも今、ついに 決定版 と呼べるツールが成熟しました。それが uv です。
(2024 年 2 月にリリースされ、2025 年には v0.9 に到達。活発に開発が続いています)


TL;DR(先に結論)

  • 2025 年、Windows で Python 環境を作るなら uv 一択
  • pip より 10 ~ 100 倍速く(公式ドキュメントより)、venv も pyenv も不要
  • 5 分で完了する Python 環境構築
  • VS Code / GitHub Copilot との完璧な連携
  • 環境が壊れにくい(これが一番大事!)

なぜ Windows の Python 環境は壊れるのか?

そもそも、なぜ Windows の Python 環境は壊れやすいのでしょうか?

原因 1: 複数の Python が混在する

Windows では Python が 複数の場所 にインストールされがちです:

  • Python 公式インストーラー → C:\Python312\
  • Microsoft Store 版 → %LOCALAPPDATA%\Microsoft\WindowsApps\
  • Anaconda → C:\Users\xxx\anaconda3\
  • VS Code が自動インストール → 別の場所

どの Python が使われるかは PATH の順番次第。これが混乱の元です。

原因 2: グローバルインストールの罠

pip install を仮想環境なしで実行すると、グローバル環境にインストールされます。
プロジェクト A で numpy 1.x が必要、プロジェクト B で numpy 2.x が必要...という状況で衝突が起きます。

原因 3: venv の管理が面倒

「仮想環境を使えばいい」のは分かっていても:

  • 毎回 python -m venv .venv を打つのが面倒
  • Activate を忘れてグローバルに入れてしまう
  • どの Python バージョンで作ったか分からなくなる

uv はこれらの問題を すべて解決します。


uv とは?

uv は、Rust 製の超高速 Python パッケージマネージャーです。Ruff(Python リンター)を開発した Astral 社が 2024 年にリリースしました。

従来ツールとの比較

ツール 役割 uv で代替
pip パッケージ管理 uv pip / uv add
venv 仮想環境作成 uv venv
pip-tools 依存関係ロック uv lock
pyenv Python バージョン管理 uv python install

つまり、uv だけで全部できる!

速度比較

公式ドキュメントでは 「10-100x faster than pip」 と記載されています。

実際の速度はパッケージやキャッシュ状態によって異なりますが、体感でも明らかに速いです。詳細なベンチマークは uv 公式ベンチマーク を参照してください。

💡 ポイント: キャッシュが効いている状態(Warm Installation)では特に高速です。初回インストール(Cold Installation)でも pip より数倍速いです。


WSL ではダメなの?

「Windows で Python 環境が壊れるなら、WSL(Windows Subsystem for Linux)を使えばいいのでは?」

これは正論です。実際、WSL は素晴らしい選択肢です。ただし、ユースケースによって最適解が異なります

WSL が向いているケース

  • Linux 専用のツールを使いたい(Docker、シェルスクリプトなど)
  • 本番環境が Linux なので開発環境も揃えたい
  • macOS / Linux 向けのチュートリアルをそのまま試したい

ネイティブ Windows + uv が向いているケース

  • Windows アプリとの連携が必要(Excel、PowerPoint、Outlook 等)
  • GUI アプリを開発したい(tkinter、PyQt など)
  • ファイルシステムのパフォーマンスを重視(WSL はクロスマウントが遅い)
  • VS Code + GitHub Copilot をシンプルに使いたい
  • WSL のセットアップや管理が面倒

比較表

観点 WSL + Python Windows + uv
セットアップ やや複雑 簡単(5 分)
Linux ツールとの互換性 ◎ 完璧 △ 一部制限あり
Windows アプリ連携 △ 難しい ◎ ネイティブ
ファイル I/O 速度 △ クロスマウント遅 ◎ ネイティブ速度
VS Code 連携 ○ Remote-WSL 必要 ◎ そのまま使える
GitHub Copilot ○ 動く ◎ 設定不要で動く
ディスク容量 △ 追加で数 GB ◎ 最小限
学習コスト △ Linux 知識必要 ◎ PowerShell のみ

私の結論

「Windows で完結する開発なら uv、Linux 依存があるなら WSL」 がベストプラクティスです。

特に GitHub Copilot を使った開発 では、ネイティブ Windows + uv の方がシンプルに動作します。WSL だと Remote-WSL 拡張の設定やパスの問題でハマることがあります。

💡 両方使う選択肢もアリ: メインは Windows + uv で開発し、Linux 依存のツールだけ WSL で動かす、というハイブリッド運用も可能です。


セットアップ手順

前提条件

  • Windows 10 / 11
  • PowerShell(標準で入ってる)
  • VS Code(推奨)

ステップ 1: uv をインストール

PowerShell を開いて以下を実行:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

インストール完了後、ターミナルを再起動してください。

⚠️ 重要: uv のインストーラーは PATH を自動で追加しますが、既存のターミナルには反映されません。必ず新しいターミナルを開くか、以下を実行してください:

# 現在のセッションに PATH を追加
$env:Path = "C:\Users\$env:USERNAME\.local\bin;$env:Path"

確認:

uv --version
# uv 0.9.18 (0cee76417 2025-12-16) のように表示されれば OK

ステップ 2: Python をインストール

uv 経由で Python をインストール(pyenv 不要!):

uv python install 3.12

確認:

uv run python --version
# Python 3.12.12

💡 ポイント: uv python install でインストールした Python は %APPDATA%\uv\python\(例: C:\Users\<ユーザー名>\AppData\Roaming\uv\python\)に保存され、uv run 経由でどこからでも使えます。

ステップ 3: プロジェクト用の仮想環境を作成

プロジェクトフォルダに移動して仮想環境を作成:

cd D:\your-project
uv venv --python 3.12

これで .venv フォルダが作成されます。

ステップ 4: パッケージをインストール

# uv pip を使う方法(pip 互換、シンプルに使いたい場合)
uv pip install requests pandas numpy

# uv add を使う方法(プロジェクト管理したい場合)
# &#x26a0;&#xfe0f; uv add を使うには先に uv init でプロジェクトを初期化する必要があります
uv init
uv add requests pandas numpy

💡 uv pip と uv add の違い:

  • uv pip install: pip と同じ感覚で使える。シンプルなスクリプト向き
  • uv add: pyproject.tomluv.lock で依存関係を管理。チーム開発やパッケージ公開向き

VS Code との連携

グローバル設定(全ワークスペース共通)

.venv がないフォルダでも Python が正しく動くように、VS Code のグローバル設定に uv でインストールした Python を登録しておくのがおすすめです。

  1. Ctrl+Shift+P → "Preferences: Open User Settings (JSON)" を開く
  2. 以下を追加:
{
  &quot;python.defaultInterpreterPath&quot;: &quot;C:\\Users\\&lt;ユーザー名&gt;\\.local\\bin\\python3.12.exe&quot;
}

💡 なぜ必要?: この設定がないと、VS Code や GitHub Copilot が Microsoft Store の Python スタブを参照してしまい、正しく動作しないことがあります。

プロジェクト固有の設定(推奨)

プロジェクトごとに依存パッケージを分離したい場合は、.venv を作成してワークスペース設定に登録:

cd D:\your-project
uv venv --python 3.12

.vscode/settings.json に追加:

{
  &quot;python.defaultInterpreterPath&quot;: &quot;${workspaceFolder}/.venv/Scripts/python.exe&quot;
}

💡 優先順位: ワークスペース設定(.vscode/settings.json)はグローバル設定より優先されます。.venv があるプロジェクトではそちらが使われ、ないプロジェクトではグローバル設定の Python が使われます。

GitHub Copilot との連携

上記設定をすれば、GitHub Copilot(Agent モード含む)も正しい Python インタープリターを使用します。特別な設定は不要です!

確認方法

  1. VS Code をリロード(Ctrl+Shift+P → "Reload Window")
  2. 左下のステータスバーに Python 3.12.12 と表示されれば OK
  3. .venv があるプロジェクトでは ('.venv': venv) も表示される

日常的な使い方

スクリプトを実行する

# 方法1: uv run を使う(仮想環境を意識しなくていい)
uv run python script.py

# 方法2: 仮想環境を有効化してから実行
.\.venv\Scripts\Activate.ps1
python script.py

パッケージを追加する

# シンプルにパッケージをインストールしたい場合
uv pip install &lt;パッケージ名&gt;

# プロジェクト管理(pyproject.toml)を使う場合
# &#x26a0;&#xfe0f; uv add を使うには先に uv init でプロジェクトを初期化する必要があります
uv add &lt;パッケージ名&gt;

別のプロジェクトで使う

cd D:\another-project
uv venv --python 3.12
uv pip install -r requirements.txt  # 既存の requirements.txt がある場合

Windows Terminal でも python を使う(PowerShell プロファイル設定)

VS Code 外(Windows Terminal など)でも python コマンドを使いたい場合は、PowerShell プロファイルにエイリアスを設定します。

プロファイルを編集

# プロファイルを開く
notepad $PROFILE

以下を追加

# uv Python alias
Set-Alias -Name python -Value &quot;C:\Users\&lt;ユーザー名&gt;\.local\bin\python3.12.exe&quot; -Scope Global
Set-Alias -Name python3 -Value &quot;C:\Users\&lt;ユーザー名&gt;\.local\bin\python3.12.exe&quot; -Scope Global

# uv 自体を PATH に追加(ターミナル再起動なしで使えるようにする)
$env:Path = &quot;C:\Users\$env:USERNAME\.local\bin;$env:Path&quot;

⚠️ 注意: uv では pip コマンドの代わりに uv pip を使います。pip3.12.exe のような単体の pip 実行ファイルは作成されません。

⚠️ 注意: <ユーザー名> は自分のユーザー名に置き換えてください。

反映

# 現在のセッションに反映
. $PROFILE

# または新しいターミナルを開く

これで Windows Terminal からも python が使えるようになります!


トラブルシューティング

Q: python コマンドが見つからない

A: 上記の「PowerShell プロファイル設定」を行うか、uv run python を使ってください:

uv run python script.py

または仮想環境を有効化:

.\.venv\Scripts\Activate.ps1

Q: VS Code が古い Python を参照している

A: .vscode/settings.jsonpython.defaultInterpreterPath を設定し、VS Code をリロードしてください。

Q: NumPy 2.0 と PyTorch の互換性問題

A: NumPy のバージョンを指定してインストール:

uv pip install &quot;numpy&lt;2.0&quot; torch

Q: uv をアンインストールしたい

uv self uninstall

まとめ:もう環境構築で泣かない

uv で解決できること

  • Python バージョンの混在問題uv python install で一元管理
  • グローバル汚染uv venv でプロジェクトごとに隔離
  • 依存関係の衝突uv lock で再現可能な環境を保証
  • 遅いインストール → Rust 製で 10 ~ 100 倍高速(公式ベンチマーク)
  • ツールの乱立 → pip, venv, pyenv を uv 1 つに統合

従来の方法との比較

従来の方法 uv を使う方法
Python 公式インストーラー uv python install 3.12
python -m venv .venv uv venv
pip install package uv pip install package
pip freeze > requirements.txt uv pip freeze または uv lock

「また環境壊れた...」から卒業しましょう!

2025 年の Python 開発は uv から始めよう 🚀


参考リンク


この記事は 2025 年 12 月 29 日時点の情報です。uv v0.9.18 で実機動作確認しています(Windows 11)。

  cards

シェアする

  • このエントリーをはてなブックマークに追加

フォローする