はじめに
- 今回、uv/uvxやpipxの使い方自体には深入りしません
きっかけ
- MCPの文脈で使用したuvとその中で使用するuvxについて深く理解していなかったまま放置していたが、pypa/pipx: Install and Run Python Applications in Isolated Environmentsによる理解を通してuvxの意味を理解することができたのでここに書き記しておく。
これまでの仮想環境の意義と課題
- venv等の仮想環境を使うメリットとしてプロジェクトごとに独立地sた環境を作成することができてグローバルの環境が汚染されないこと
- 一方でBlack 25.1.0 documentationといったフォーマッタは異なるプログラムでも一貫して使いたいモチベーションがあるはず
pipxの意義
Blackを専用の仮想環境にインストールし、それをユーザーのホームディレクトリ内で仮想環境をアクティベートせずに使用する手順を記します
mkdir -p ~/.local/bin
export PATH="$HOME/.local/bin:$PATH"
python -m venv black
black/bin/python -m pip install black
cp black/bin/black ~/.local/bin
black --version
black, 25.1.0 (compiled: yes)
Python (CPython) 3.13.2
pipxのリポジトリのトップには
独立した複数環境にPythonアプリケーションをインストールして実行する
という説明が記載されているとおりで先ほどのサンプルのような機能を実現するプロジェクトであると理解すれば良いと思います。
そしてハイパーモダンPythonの訳註には下記の記述があることから、uvxはuvにおけるpipxであるという解釈に落ち着いたのです。
uvにpipxの代替となるコマンドuvxがある。なお、uvxはuv tool runのエイリアスである。