1. ホーム
  2. python

[解決済み] pipでインストールしたpythonパッケージの依存関係を確認する

2022-04-18 23:50:09

質問

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を使いたいのですが、誤ってアンインストールしたりアップグレードしたりしないように、もっと詳しくわかるまでパッケージに依存したくないのです。

解決するには?

を試してみてください。 パイプデプトリー これは依存関係をツリー構造で表示するものです。

$ 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



EDITです。 コメントで @Esteban が指摘しているように、ツリーを逆からリストアップすることもできます。 -r または単一のパッケージに対して -p <package_name> を実行すると、インストールされているWerkzeugを見つけることができます。

$ pipdeptree -r -p Werkzeug
Werkzeug==0.11.15
  - Flask==0.12 [requires: Werkzeug>=0.7]