pipパッケージの依存関係ツリーを表示する方法はありますか?


96

複数のパッケージ依存関係を持つプロジェクトがありますrequirements.txt。主な要件はにリストされています。私が呼び出すpip freezeと、現在インストールされているパッケージがプレーンリストとして出力されます。次のような依存関係も取得したいと思います。

Flask==0.9
    Jinja2==2.7
    Werkzeug==0.8.3

Jinja2==2.7

Werkzeug==0.8.3

Flask-Admin==1.0.6
    Flask==0.9
    Jinja2==2.7
    Werkzeug==0.8.3

目標は、特定の各パッケージの依存関係を検出することです。

Werkzeug==0.8.3
    Flask==0.9
    Flask-Admin==1.0.6

そして、これらを私の現在のに挿入しrequirements.txtます。たとえば、この入力の場合:

Flask==0.9
Flask-Admin==1.0.6
Werkzeug==0.8.3

取得したい:

Flask==0.9
    Jinja2==2.7
Flask-Admin==1.0.6
Werkzeug==0.8.3

インストールされているpipパッケージの依存関係を表示する方法はありますか?


あなたが4年前にこの質問をし、すぐに得た答えを最良の答えとして熱心にマークしたことを私は知っています。よろしくお願いします。しかし、1年後にAnthonから得た答えを見てみます。pipdeptreeは素晴らしいです!!! どうやら@naiquevinは2015年4月以来SOに参加していませんが、彼はここで本当に素晴らしいツールを作成しました。
Rob Fagen 2017

回答:


142

あなたは見てみるべきですpipdeptree

$ pip install pipdeptree
$ pipdeptree -fl
Warning!!! Cyclic dependencies found:
------------------------------------------------------------------------
xlwt==0.7.5
ruamel.ext.rtf==0.1.1
xlrd==0.9.3
openpyxl==2.0.4
  - jdcal==1.0
pymongo==2.7.1
reportlab==3.1.8
  - Pillow==2.5.1
  - pip
  - setuptools

requirements.txt直接指定したようにファイルは生成されません。ただし、ソース(255行のPythonコード)は、ニーズに合わせて比較的簡単に変更できる必要があります。または、(@ MERoseがpipdeptree0.3 READMEにあるように)使用することもできます。

pipdeptree --freeze  --warn silence | grep -P '^[\w0-9\-=.]+' > requirements.txt

の0.5バージョンでpipdeptreeは、--jsonオプションを使用したJSON出力も可能です。これは、読みにくくなる代わりに、より簡単にマシンで解析できます。


pypi.python.org/pypi/pipdeptree/0.3によると、requirements.txtpipdeptree | grep -P '^\w+'出力します。
MERose 2016年

@MERoseそれを指摘してくれてありがとう。これを書いたとき、私はまだバージョン0.2を使用していたに違いありません。
Anthon 2016年

それはのために働いていませんbokeh。ピップは、それらを表示しませんが、condaはありませんので、要件の特定の組織を持っているこのパッケージ:(
Sklavit

12

警告:py2のみ/アバンダンウェア

yolk パッケージの依存関係を表示できます。

  • 経由でインストールされました setuptools
  • 依存関係情報を含むメタデータが付属しています

    $ yolk -d Theano
    Theano 0.6.0rc3
      scipy>=0.7.2
      numpy>=1.5.0
    

ありがとう。これは完全なソリューションではありませんが、役立つユーティリティです。
tbicr 2013年

完全な解決策があるかどうかはdistutils
わかり

5
執筆時点では、yolkはpy3kをサポートしていません。
yegle 2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.