mise と uv を併用し、グローバル環境とプロジェクト環境を分離して管理する。
## 使い分け
| 用途 | 推奨ツール | 理由 |
|------|-----------|------|
| グローバル [[Python]] | mise | `python` コマンドが直接使える |
| グローバル CLI ツール | uv tool | 隔離環境で依存競合なし |
| プロジェクト依存 | uv | 仮想環境と依存管理が統合されている |
## グローバル環境
mise でグローバル Python を設定すると、[[ターミナル]]で `python` と打つだけで使える。
```bash
# グローバル Python の設定
mise use -g
[email protected]
python --version # 直接使える
```
グローバルな CLI ツール (ruff, black など) は `uv tool` でインストールする。各ツールが隔離環境で管理されるため、依存の競合が起きない。
```bash
# グローバル CLI ツール
uv tool install ruff
uv tool install black
ruff --version # 直接使える
```
## プロジェクト環境
プロジェクト内では uv で仮想環境と依存を管理する。uv はプロジェクト内で `uv run` 経由で実行する設計のため、グローバル用途には向かない。
```bash
# プロジェクト内での使用
uv run python --version
```
> [!tip]
> polars や seaborn などのライブラリは CLI ツールではないため、`uv tool` ではなくプロジェクトの依存として管理する。アドホック分析用のプロジェクトを作成し、そこで依存を管理するとよい。
## 関連ノート
- **[前提]** [[uv を macOS にインストールする]]: 本ノートの併用方針は uv がインストール済みであることが前提
- **[応用]** [[uv で Python プロジェクトを新規作成する]]: 本ノートの役割分担 (プロジェクトは uv が担当) の実践例
- **[応用]** [[uv で Python ランタイムを変更する]]: プロジェクト環境は uv で管理するという本ノートの方針の実践例
- **[対比]** [[R はツールをグローバルにインストールし、分析ライブラリは renv で管理する]]: 同じ「グローバル / プロジェクト分離」問題を R の renv で解いた姉妹ケース