スタンドアローンのコマンドラインツールをインストールする#

多くのパッケージは、コマンドラインアプリケーションを提供しています。そのようなパッケージの例としては、 mypyflake8blackPipenv が挙げられます。

通常ならシステムのどこからでもこれらのアプリケーションにアクセスできるようにしたいと思うでしょうが、パッケージとその依存先パッケージを同じグローバル環境にインストールすると、バージョンの衝突を起こしてオペレーティングシステムが持っている Python パッケージ間の依存関係を破壊してしまうかもしれません。

pipx は、 $PATH に含まれるディレクトリを通してアプリケーションにアクセスできるようにしつつ各パッケージに仮想環境を作成することでこの問題を解決します。こうすることで、各パッケージの更新や削除をしても他のパッケージには影響を与えず、どこからでもアプリケーションを安全に走らせることができるようにできます。

注釈

pipx は Python 3.6+ でのみ動作します。

pipx は pip と一緒にインストールされています:

python3 -m pip install --user pipx
python3 -m pipx ensurepath
py -m pip install --user pipx
py -m pipx ensurepath

注釈

ensurepath `` は、アプリケーションのあるディレクトリが ``$PATH に含まれるようにすることを保証します。この更新(訳注、``$PATH``の修正のこと)が効果を持つようにするためにターミナルを再起動する必要があるかもしれません。

これで、 pipx install を使ってパッケージをインストールすることができるようになり、どこからでもそのパッケージのアプリケーションを起動することができるようになりました。

$ pipx install PACKAGE
$ PACKAGE_APPLICATION [ARGS]

例:

$ pipx install cowsay
  installed package cowsay 2.0, Python 3.6.2+
  These binaries are now globally available
    - cowsay
done! ✨ 🌟 ✨
$ cowsay moo
  ___
< moo >
  ===
        \
         \
           ^__^
           (oo)\_______
           (__)\       )\/
               ||     ||
               ||----w |

pipx でインストールされたパッケージのリストやどんなアプリケーションが使用可能かを見るためには、 pipx list を使ってください:

$ pipx list
venvs are in /Users/user/.local/pipx/venvs
symlinks to binaries are in /Users/user/.local/bin
   package black 18.9b0, Python 3.6.2+
    - black
    - blackd
   package cowsay 2.0, Python 3.6.2+
    - cowsay
   package mypy 0.660, Python 3.6.2+
    - dmypy
    - mypy
    - stubgen
   package nox 2018.10.17, Python 3.6.2+
    - nox
    - tox-to-nox

パッケージを更新またはアンインストールするには:

pipx upgrade PACKAGE
pipx uninstall PACKAGE

pipx は pip を使って更新やアンインストールができます:

python3 -m pip install --upgrade pipx
python3 -m pip uninstall pipx
py -m pip install --upgrade pipx
py -m pip uninstall pipx

また、pipx ならアプリケーションの最新版を一時的で短命の環境にインストールして動作させることができます。例えば:

pipx run cowsay moooo

pipx で使える(サブ)コマンドの完全なリストを見たければ、次のようにしてください:

pipx --help

pipx については、 https://pypa.github.io/pipx/ でもっと学べます。