pipdeptree
を使うと、pip
でインストールしたパッケージの依存関係を調べることができます。
$ # macOS Sierra (10.12) + Homebrew
$
$ # Python2 用のソフトウェアをインストール
$ pip install pipdeptree
$
$ # Python3 用のソフトウェアをインストール
$ pip3 install pipdeptree
$ # macOS Sierra (10.12) + Homebrew
$ pipdeptree
matplotlib==2.0.2
- cycler [required: >=0.10, installed: 0.10.0]
- six [required: Any, installed: 1.11.0]
- numpy [required: >=1.7.1, installed: 1.13.3]
- pyparsing [required: !=2.1.6,!=2.0.4,!=2.1.2,>=1.5.6, installed: 2.2.0]
- python-dateutil [required: Any, installed: 2.6.1]
- six [required: >=1.5, installed: 1.11.0]
- pytz [required: Any, installed: 2017.2]
- six [required: >=1.10, installed: 1.11.0]
pipdeptree==0.10.1
- pip [required: >=6.0.0, installed: 9.0.1]
scipy==0.19.1
- numpy [required: >=1.8.2, installed: 1.13.3]
setuptools==36.5.0
wheel==0.30.0
しかし、pipdeptree
はコマンドラインツールなので、このままでは Python の複数バージョンに同時にインストールすることができません。
モジュールとして実行する
実は、pipdeptree
は Python のモジュールとして実行できます。 この方法であれば、複数バージョンにインストールして使うことができます。
$ # Python 2 の pip モジュールを調べる
$ python -m pipdeptree
$
$ # Python 3 の pip モジュールを調べる
$ python3 -m pipdeptree
コマンドラインツールを残したい方を後からインストールします。
$ # 複数バージョンを同時にインストールする
$ # この順番でインストールすると、コマンドラインツールは Python 3 用になります。
$ pip install pipdeptree
$ pip3 install pipdeptree
参考資料
-
Python: pipdeptree でパッケージの依存関係を調べる
http://blog.amedama.jp/entry/2016/05/29/182402 -
pipdeptree / setup.py
https://github.com/naiquevin/pipdeptree/blob/master/setup.py -
Pythonでグローバルコマンドを含んだパッケージを作る
https://qiita.com/fetaro/items/bb0eb8292127b5d1e9a8