Closed5

【Python】pipで依存関係を解決してパッケージをアンインストールしたい

あーるあーる

Pythonで依存関係を保ったままアンインストールしたい

開発をする際にvenvなどの仮想環境をすることが多いが、pipでインストールしたパッケージの依存関係からまとめてパッケージをアンインストールしたいケースがあり調査したのでメモ。

※ 本スクラップ内で記載しているバージョンはスクラップ作成時のもの

あーるあーる

ケース

venvを使用して仮想環境を作成したのちに、Pythonのフォーマッターとして有名なblackをインストール。

$ pip install black

アンインストールしようとしてpip uninstall blackを実行するも、blackに依存しているパッケージ群が残ったままとなっている。

$ pip list
           
Package         Version
--------------- -------
click           8.1.3
mypy-extensions 1.0.0
packaging       23.1
pathspec        0.11.1
pip             23.1.2
platformdirs    3.5.1
setuptools      67.6.1

blackは消えたが、依存関係としてインストールされたclickmypy-extensionsがそのまま残っている。

JavaScriptでおなじみのnpmやYarnのようなパッケージマネージャーと挙動を比較すると少し違和感があるところで少し気持ち悪いのでなんとかしたかった。

あーるあーる

pip-autoremoveを導入

依存するパッケージをまとめてアンインストールしようと調査したところ、pip-autoremoveなるものがあり、依存関係をまとめてアンインストールできる模様。

早速インストールしてみる。

pip install pip-autoremove
あーるあーる

pip-autoremoveにてアンインストール実行

検証用にblackを再インストールして検証を行う。

pip install black

インストール結果は以下の通り。

$ pip list

Package         Version
--------------- -------
black           23.3.0
click           8.1.3
mypy-extensions 1.0.0
packaging       23.1
pathspec        0.11.1
pip             23.1.2
platformdirs    3.5.1
setuptools      67.6.1

blackが再びインストールされたことを確認してpip-autoremoveを使用してみる。
pip autoremoveではないため注意する

pip-autoremove black

pip listで確認したところ、依存関係がまとめてアンインストールされていることが確認できた。

Package        Version
-------------- -------
pip            23.1.2
pip-autoremove 0.10.0
setuptools     67.6.1
あーるあーる

パッケージ差分

pip-autoremove black実行後の差分は以下の通り。

Package         Version
--------------- -------
- black           23.3.0
- click           8.1.3
- mypy-extensions 1.0.0
- packaging       23.1
- pathspec        0.11.1
pip             23.1.2
pip-autoremove 0.10.0
- platformdirs    3.5.1
setuptools      67.6.1
このスクラップは2023/06/03にクローズされました