pipxとは?pipとの違い・使い方・インストール方法などを解説!

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.pyruff 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の違いを簡単にまとめると、次のようになります。

pippipx
主な用途PythonパッケージをインストールするPython製CLIツールをインストールする
インストール先指定したPython環境ツールごとの専用仮想環境
環境の分離自動では行わないツールごとに自動で分離
requests、pandas、FlaskBlack、Ruff、Poetry、HTTPie
pip install requestspipx install black

特に重要なのは、何をインストールするかではなく、どのように使うものなのかです。

例えば、requestsは、以下に示すようにPythonプログラムから利用します。

import requests

このようなライブラリは、以下に示すようにpipでインストールします。

pip install requests

一方、Blackは、以下に示すようにターミナルからコマンドとして実行します。

black sample.py

このようなPython製CLIツールは、以下に示すようにpipxでインストールするのに向いています。

pipx install black

pipxと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.py

pipxのインストール方法

pipxを利用するには、まずpipx自体をインストールします。

インストール方法はOSによって異なります。

Windowsの場合

Windowsでは、pipを使ってインストールできます。

py -m pip install --user pipx

その後、以下のコマンドを実行します。ensurepathは、pipxでインストールしたコマンドを実行するために必要なディレクトリをPATHへ追加するためのコマンドです。

py -m pipx ensurepath

その後、ターミナルを再起動し、以下のコマンドを実行してバージョンが表示されれば、pipxを使用できます。

pipx --version

Ubuntuの場合

Ubuntu 23.04以降では、以下のコマンドを実行すれば、pipxを使用できます。

sudo apt update
sudo apt install pipx
pipx ensurepath

pipxでインストールしたツールを確認する方法

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/binPATHに含まれているため、blackなどのコマンドをどのディレクトリからでも実行できます。

pipxでツールをアップデートする方法

pipxでインストールしたツールをアップデートするには、以下のコマンドを実行します。

pipx upgrade パッケージ名

# 例: Blackをアップデートする場合
pipx upgrade black

pipxで管理しているツールをまとめてアップデートする場合は、以下のコマンドを実行します。

pipx upgrade-all

pipxでツールをアンインストールする方法

ツールをアンインストールするには、以下のコマンドを実行します。

pipx uninstall パッケージ名

# 例: Blackをアンインストールする場合
pipx uninstall black

pipxでよく使うコマンド一覧

pipxでよく使う基本コマンドをまとめると、次のようになります。

コマンド内容
pipx --versionpipxのバージョンを確認する
pipx ensurepathpipxのコマンド用ディレクトリをPATHに追加する
pipx install パッケージ名CLIツールをインストールする
pipx listインストール済みのツールを確認する
pipx upgrade パッケージ名指定したツールをアップデートする
pipx upgrade-allインストール済みツールをまとめてアップデートする
pipx uninstall パッケージ名指定したツールをアンインストールする

本記事のまとめ

この記事では『pipx』について、以下の内容を説明しました。

  • pipxとは
  • pipとpipxの違い
  • pipxを使うメリット
  • pipxとvenvの違い
  • pipxのインストール方法
  • pipxでインストールしたツールを確認する方法
  • pipxでツールをアップデート・アンインストールする方法
  • pipxでよく使う基本コマンド

お読みいただきありがとうございました。

スポンサーリンク