pip freezeを実行すると、明示的にインストールしていないPythonパッケージが多数表示されます。例:
$ pip freeze
Cheetah==2.4.3
GnuPGInterface==0.3.2
Landscape-Client==11.01
M2Crypto==0.20.1
PAM==0.4.2
PIL==1.1.7
PyYAML==3.09
Twisted-Core==10.2.0
Twisted-Web==10.2.0
(etc.)
pip がこれらの特定の依存パッケージをインストールした理由を判断する方法はありますか? 言い換えると、これらのパッケージを依存関係として持っていた親パッケージをどのように判断すればよいのでしょうか?
たとえば、Twisted を使用したい場合、誤ってアンインストールしたりアップグレードしたりしないよう詳しく知るまでは、パッケージに依存したくない場合があります。
ベストアンサー1
試してみるといいピップデップツリー依存関係をツリー構造として表示します。例:
$ pipdeptree
Lookupy==0.1
wsgiref==0.1.2
argparse==1.2.1
psycopg2==2.5.2
Flask-Script==0.6.6
- Flask [installed: 0.10.1]
- Werkzeug [required: >=0.7, installed: 0.9.4]
- Jinja2 [required: >=2.4, installed: 2.7.2]
- MarkupSafe [installed: 0.18]
- itsdangerous [required: >=0.21, installed: 0.23]
alembic==0.6.2
- SQLAlchemy [required: >=0.7.3, installed: 0.9.1]
- Mako [installed: 0.9.1]
- MarkupSafe [required: >=0.9.2, installed: 0.18]
ipython==2.0.0
slugify==0.0.1
redis==2.9.1
実行するには:
pip install pipdeptree
編集:コメントで @Esteban が指摘したように、-r
または で単一のパッケージに対してツリーを逆にリストすることもできるので、-p <package_name>
インストールされている Werkzeug を見つけるには、次を実行できます。
$ pipdeptree -r -p Werkzeug
Werkzeug==0.11.15
- Flask==0.12 [requires: Werkzeug>=0.7]