🐍

pipx install pipx

2022/06/27に公開

Python製のコマンドを環境を汚さずにインストールするpipxというものがありますが、pipx自体をpipxに管理させるのはアリだろうかとやってみます。

https://pypa.github.io/pipx/

pipxでインストールしたコマンドは、デフォルトでは $HOME/.local/pipx/venvs にPython仮想環境としてインストールされます。pipx自体をこの場所にインストールします。

python3 -m venv $HOME/.local/pipx/venvs/pipx

仮想環境を有効化してpipxをインストールします。

. $HOME/.local/pipx/venvs/pipx/bin/activate
pip install -U pip setuptools
pip install pipx

この状態でpipx listとすると

pipx list
コンソール出力
venvs are in /Users/speg03/.local/pipx/venvs
apps are exposed on your $PATH at /Users/speg03/.local/bin
⚠️  package pipx has missing internal pipx metadata.

One or more packages have a missing internal pipx metadata.
   They were likely installed using a pipx version before 0.15.0.0.
   Please uninstall and install these package(s) to fix.

メタデータがないと言われますね。

pipxを通して再インストールします。

pipx install pipx
コンソール出力
'pipx' already seems to be installed. Not modifying existing installation in
'/Users/speg03/.local/pipx/venvs/pipx'. Pass '--force' to force installation.

そのままinstallとすると、既にあると言われてしまったので --force オプションをつけます。

pipx install --force pipx
コンソール出力
Installing to existing venv 'pipx'
⚠️  Note: pipx was already on your PATH at
    /Users/speg03/.local/pipx/venvs/pipx/bin/pipx
  installed package pipx 1.1.0, installed using Python 3.9.13
  These apps are now globally available
    - pipx
done! ✨ 🌟 ✨

pipxの仮想環境を有効化している状態なので、PATHに既にpipxがあるよとメッセージがありますね。

ちなみに、この時点で $HOME/.local/bin にPATHが通っていない場合はensurepathを実行しておく(または手動でPATHを通しておく)と良さそうです。私はもともとPATHを通していたので実行しませんでした。

pipx ensurepath

仮想環境から抜けて最終確認です。

deactivate
pipx list
コンソール出力
venvs are in /Users/speg03/.local/pipx/venvs
apps are exposed on your $PATH at /Users/speg03/.local/bin
   package pipx 1.1.0, installed using Python 3.9.13
    - pipx

問題なさそうな気がします。しばらくこれで使ってみましょう。

Discussion