Pythonでライブラリをインストールするときは、pipを使うことがよくあります。
例えば、requestsをインストールする場合は、次のように実行します。
pip install requests一方、Pythonについて調べていると、次のようにpipxというコマンドを見かけることがあります。
pipx install black初めて見ると、
- pipxとは何?
- pipとpipxは何が違うの?
- なぜ普通にpipでインストールしないの?
- どんなときにpipxを使えばよいの?
- pipxでインストールすると、どこにインストールされるの?
と疑問に思うこともあるでしょう。
この記事では、pipxとは何なのか、pipとの違いや基本的な使い方などをわかりやすく解説します。
pipxとは?
pipxは、Pythonで作られたコマンドラインツール(CLIツール)をインストール・管理するためのツールです。
例えば、Pythonには次のようなCLIツールがあります。
- Black
- Ruff
- mypy
- Poetry
- HTTPie
このようなツールは、Pythonプログラムからimportして使うというより、black sample.pyやruff check .のように、ターミナルからコマンドを実行して使います。
後ほど解説しますが、このようなツールをpipxでインストールすると、ツールごとに専用の仮想環境を自動的に作成し、その仮想環境にパッケージをインストールしてくれます。そのため、ツールが必要とする依存パッケージが衝突しにくくなります。
また、実行用のコマンドをPATHから実行できるようにしてくれます。そのため利用者から見ると、「環境は分離されているのに、普通のコマンドのように使える」という状態になります。これがpipxの大きなメリットです。
例えば、Blackをインストールする場合は、以下のコマンドを実行します。
pipx install blackこのコマンドを実行すると、イメージとしては次のようになります。
pipx install black
↓
Black専用の仮想環境を作成
↓
その仮想環境に「Black」と「Blackが必要とする依存パッケージ」をインストール
↓
blackコマンドを、PATHが通ったディレクトリ(Linuxなら ~/.local/bin など)に公開する
↓
仮想環境をactivateしなくても「black sample.py」と実行できるインストール後は、通常のコマンドとして、
black sample.pyのように実行できます。
また、Blackに加えてほかのCLIツール(例えばPoetry)をインストールした場合、イメージとしては次のようになります。
pipxの仮想環境(例: .local/share/pipx/venvs)
│
├─ Black専用の仮想環境
│ ├─ Black
│ └─ Blackが必要とする依存パッケージ
│
└─ Poetry専用の仮想環境
├─ Poetry
└─ Poetryが必要とする依存パッケージ上記に示すようにBlackとPoetryが別々の仮想環境にインストールされるため、お互いの依存パッケージが衝突しにくくなります。
そもそもなぜpipxが必要なの?
Python製のCLIツールもPythonパッケージなので、以下に示すようにpipを使って、インストールすることができます。
pip install blackでは、なぜBlackなどを普通にpipでインストールするのではなく、pipxを使うのでしょうか。
理由の1つが、ツールごとに仮想環境を分離できることです。例えば、1つのPython環境に次のようなツールをインストールしたとします。
pip install black
pip install poetry
pip install mypy複数のツールを同じPython環境へインストールすると、それぞれのツールが必要とする依存パッケージも同じPython環境にインストールされます。イメージとしては次のようになります。
Python環境(例: .local/lib/python3.12/site-packages)
│
├─ Black
├─ Poetry
├─ mypy
├─ Blackが必要とする依存パッケージ
├─ Poetryが必要とする依存パッケージ
└─ mypyが必要とする依存パッケージツールによって必要とする依存パッケージのバージョンが異なる場合、バージョンが競合する可能性があります。
そこで以下に示すようにpipxを使います。
pipx install black
pipx install poetry
pipx install mypyすると、イメージとしては次のようになります。
pipxの仮想環境(例: .local/share/pipx/venvs)
│
├─ Black専用の仮想環境
│ ├─ Black
│ └─ Blackが必要とする依存パッケージ
│
├─ Poetry専用の仮想環境
│ ├─ Poetry
│ └─ Poetryが必要とする依存パッケージ
│
└─ mypy専用の仮想環境
├─ mypy
└─ mypyが必要とする依存パッケージ上記に示すように、ツールごとに仮想環境を分けて管理できます。そのため、あるツールをアップデートしたり削除したりしても、ほかのツールへの影響を抑えることができます。
つまりpipxは、「CLIツール専用の仮想環境を自動で作り、面倒な環境管理を代わりにやってくれるツール」と考えると分かりやすいと思います。
LinuxでBlackをインストールした場合は、環境によって異なりますが、「~/.local/share/pipx/venvs/black/」にBlack用の仮想環境が作成されます。
pipとpipxの違い
pipとpipxの違いを簡単にまとめると、次のようになります。
| pip | pipx | |
|---|---|---|
| 主な用途 | Pythonパッケージをインストールする | Python製CLIツールをインストールする |
| インストール先 | 指定したPython環境 | ツールごとの専用仮想環境 |
| 環境の分離 | 自動では行わない | ツールごとに自動で分離 |
| 例 | requests、pandas、Flask | Black、Ruff、Poetry、HTTPie |
| 例 | pip install requests | pipx install black |
特に重要なのは、何をインストールするかではなく、どのように使うものなのかです。
例えば、requestsは、以下に示すようにPythonプログラムから利用します。
import requestsこのようなライブラリは、以下に示すようにpipでインストールします。
pip install requests一方、Blackは、以下に示すようにターミナルからコマンドとして実行します。
black sample.pyこのようなPython製CLIツールは、以下に示すようにpipxでインストールするのに向いています。
pipx install blackpipxとvenvの違い
pipxについて理解するうえで、venvとの違いも知っておくと分かりやすいです。venvは、自分でPythonの仮想環境を作成するための仕組みです。
venvを使ってCLIツールをインストールした場合の流れについてこれから説明します。
例えば、プロジェクトごとの仮想環境を作る場合は、以下のコマンドを実行すると、.venvという仮想環境を作成できます。
python -m venv .venvその後、仮想環境を有効化して、以下に示すように、必要なライブラリをインストールします。
python -m pip install blackすると、イメージとしては、以下のようになります。
プロジェクトA
│
└─ .venv
├─ Black
└─ Blackが必要とする依存パッケージインストール後は、仮想環境が有効になっている状態で、以下のコマンドを実行します。
black sample.pyつまり、venvを使う場合の流れは次のようになります。
python -m venv .venv
↓
Blackを入れるための仮想環境を作成
↓
.venv\Scripts\activate
↓
仮想環境を有効化
↓
python -m pip install black
↓
仮想環境にBlackをインストール
↓
black sample.py
↓
仮想環境内のBlackを実行一方、pipxの場合は、以下のコマンドを実行するだけで、Black専用の仮想環境の作成からBlackのインストールまでを自動で行ってくれます。
pipx install blackさらに、BlackのコマンドをPATHから実行できるようにしてくれるため、通常のvenvのように毎回仮想環境を有効化する必要はありません。以下のコマンドをそのまま実行できます。
black sample.pypipxのインストール方法
pipxを利用するには、まずpipx自体をインストールします。
インストール方法はOSによって異なります。
Windowsの場合
Windowsでは、pipを使ってインストールできます。
py -m pip install --user pipxその後、以下のコマンドを実行します。ensurepathは、pipxでインストールしたコマンドを実行するために必要なディレクトリをPATHへ追加するためのコマンドです。
py -m pipx ensurepathその後、ターミナルを再起動し、以下のコマンドを実行してバージョンが表示されれば、pipxを使用できます。
pipx --versionUbuntuの場合
Ubuntu 23.04以降では、以下のコマンドを実行すれば、pipxを使用できます。
sudo apt update
sudo apt install pipx
pipx ensurepathpipxでインストールしたツールを確認する方法
pipxでインストールしているツールを確認するには、以下のコマンドを実行します。
pipx list例えば、BlackとRuffをpipxでインストールしている場合、実行結果は以下のようになります。
venvs are in /home/user01/.local/share/pipx/venvs
apps are exposed on your $PATH at /home/user01/.local/bin
manual pages are exposed at /home/user01/.local/share/man
package black 26.5.1, installed using Python 3.12.3
- black
- blackd
package ruff 0.16.4, installed using Python 3.12.3
- ruff「このツールはpipxで入れたんだっけ?」と分からなくなった場合や、実際に「ツールごとの仮想環境が保存される場所」や「pipxでインストールしたコマンドが公開されるディレクトリ」を確認するのに便利なコマンドです。
上記の場合、「ツールごとの仮想環境が保存される場所」や「pipxでインストールしたコマンドが公開されるディレクトリ」は以下のようになります。
/home/user01/.local/share/pipx/venvs:ツールごとの仮想環境が保存される場所/home/user01/.local/bin:pipxでインストールしたコマンドが公開されるディレクトリ
/home/user01/.local/binがPATHに含まれているため、blackなどのコマンドをどのディレクトリからでも実行できます。
pipxでツールをアップデートする方法
pipxでインストールしたツールをアップデートするには、以下のコマンドを実行します。
pipx upgrade パッケージ名
# 例: Blackをアップデートする場合
pipx upgrade blackpipxで管理しているツールをまとめてアップデートする場合は、以下のコマンドを実行します。
pipx upgrade-allpipxでツールをアンインストールする方法
ツールをアンインストールするには、以下のコマンドを実行します。
pipx uninstall パッケージ名
# 例: Blackをアンインストールする場合
pipx uninstall blackpipxでよく使うコマンド一覧
pipxでよく使う基本コマンドをまとめると、次のようになります。
| コマンド | 内容 |
pipx --version | pipxのバージョンを確認する |
pipx ensurepath | pipxのコマンド用ディレクトリをPATHに追加する |
pipx install パッケージ名 | CLIツールをインストールする |
pipx list | インストール済みのツールを確認する |
pipx upgrade パッケージ名 | 指定したツールをアップデートする |
pipx upgrade-all | インストール済みツールをまとめてアップデートする |
pipx uninstall パッケージ名 | 指定したツールをアンインストールする |
本記事のまとめ
この記事では『pipx』について、以下の内容を説明しました。
- pipxとは
- pipとpipxの違い
- pipxを使うメリット
- pipxとvenvの違い
- pipxのインストール方法
- pipxでインストールしたツールを確認する方法
- pipxでツールをアップデート・アンインストールする方法
- pipxでよく使う基本コマンド
お読みいただきありがとうございました。