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は消えたが、依存関係としてインストールされたclickやmypy-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にクローズされました