pipでインストールされたPythonパッケージの依存関係を識別する質問する

pipでインストールされたPythonパッケージの依存関係を識別する質問する

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]

おすすめ記事