Pythonには色々な便利なモジュールが存在します。中には単体で動くCLIツールなどもあったりします。
pipxは、Pythonで書かれたエンドユーザーアプリケーションのインストールと実行に役立つツールです。 macOSのbrew、JavaScriptのnpx、Linuxのaptやdnfに似たツールのようなものですね。
pipはPythonモジュールとCLIツールのインストールができるツールですが、pipの代わりにpipxを使えば、次のような利点があるので良い感じです。
- pip listにインストールしたモジュールが表示されない
- インストールしないで実行(ワンタイム実行)もサポート
- 色々なPythonバージョンベースで実行
- Git上のバイナリーを実行もサポート
pipxはコマンドラインからアプリケーションとして直接実行できるPythonパッケージのインストールと管理に重点を置いているという違いがあります。 早速ダウンロードして使ってみましょう。
インストール
pipxは色々なOSをサポートしています。 次のリストにあるOSであれば、各パッケージ管理用のコマンドを使ってインストールできます。
例えば、次のような感じでインストールできます(インストール方法はOSごとに異なる)。
$ sudo dnf install pipx メタデータの期限切れの最終確認: 0:04:13 前の 2024年05月29日 19時09分09秒 に実施しました。 依存関係が解決しました。 =================================================================================================================================== パッケージ アーキテクチャー バージョン リポジトリー サイズ =================================================================================================================================== インストール: pipx noarch 1.2.1-1.el9 epel 106 k 依存関係のインストール: python3-argcomplete noarch 1.12.0-5.el9 appstream 67 k python3-click noarch 8.0.3-1.el9 epel 174 k python3-packaging noarch 20.9-5.el9 appstream 77 k python3-pyparsing noarch 2.4.7-9.el9 baseos 150 k python3-userpath noarch 1.9.2-1.el9 epel 29 k トランザクションの概要 =================================================================================================================================== インストール 6 パッケージ ダウンロードサイズの合計: 604 k インストール後のサイズ: 2.2 M これでよろしいですか? [y/N]: y
これでインストールできました。
次のように実行すると、パスを追加してくれます。自動的にユーザーディレクトリーの.local/bin
にインストールし、かつPython仮想環境も組み合わせた上でバイナリーを実行してくれるので、システムのPython環境が汚されることなく利用できます。
$ pipx ensurepath /home/ytooyama/.local/bin is already in PATH. ⚠️ All pipx binary directories have been added to PATH. If you are sure you want to proceed, try again with the '--force' flag. Otherwise pipx is ready to go! ✨ 🌟 ✨
インストールが終わったので、早速使ってみます。
pipxでCLIツールをインストールして使う
今回はインターネット接続回線のテストでよく使う、speedtest-cliをインストールしてみます。 パッケージのインストールのサブコマンドはinstallです。他のインストーラーと使い勝手は一緒ですね。
$ pipx list nothing has been installed with pipx 😴 $ pipx install speedtest-cli installed package speedtest-cli 2.1.3, installed using Python 3.9.18 These apps are now globally available - speedtest - speedtest-cli done! ✨ 🌟 ✨
pipx list
でインストールしたパッケージを表示できます。これによると、venvによるPython仮想環境も組み合わせて使っているようですね。
$ pipx list venvs are in /home/ytooyama/.local/pipx/venvs apps are exposed on your $PATH at /home/ytooyama/.local/bin package speedtest-cli 2.1.3, installed using Python 3.9.18 - speedtest - speedtest-cli
インストール後はパスが通っているので、コマンドを使えばCLIが使えます。
$ speedtest-cli --version speedtest-cli 2.1.3 Python 3.9.18 (main, Jan 24 2024, 00:00:00) [GCC 11.4.1 20231218 (Red Hat 11.4.1-3)]
pipxでCLIツールをワンタイム実行する
pipxコマンドにrunオプションをつけて実行すると、わざわざインストールしておかなくても自動的に良きに計らってくれます。 インストール済みであればそれを使ってコマンドを実行しますし、未インストールであればインストールせずにCLIを実行できます。
たまにしか実行しないようなものはpipx run
を使えば良いみたいです。
$ pipx run cowsay -t hello! ______ | hello! | ====== \ \ ^__^ (oo)\_______ (__)\ )\/\ ||----w | || || //一覧にはcowsayはない $ pipx list venvs are in /home/ytooyama/.local/pipx/venvs apps are exposed on your $PATH at /home/ytooyama/.local/bin package speedtest-cli 2.1.3, installed using Python 3.9.18 - speedtest - speedtest-cli
今回は基本的な使い方を用いてpipxを利用しましたが、次のサイトを見ると色々な方法でPythonのCLIツールを実行できるようです。
pipでインストールできるCLIツールは便利なものも多いので、今後はpipの代わりにpipxを使おうと思います。 例えばAnsibleとかもpipxを使えば便利まもしれません。実際公式のドキュメントにpipxでAnsibleをインストール方法も書かれています。
元々この記事を書いた当初はLinuxの環境にpipxでツールをインストールしていたのですが、普段使いのmacOS環境にもpipxをインストールしました。 まずはcowsayでも入れておこうと思います。