複数のパッケージ依存関係を持つプロジェクトがあり、主な要件は にリストされています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 パッケージの依存関係を表示する方法はありますか?
ベストアンサー1
ぜひ見てみてください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 コード) は、必要に応じて比較的簡単に変更できるはずです。または、代わりに (pipdeptree 0.3 README で @MERose が指示しているように) 以下を使用することもできます。
pipdeptree --freeze --warn silence | grep -P '^[\w0-9\-=.]+' > requirements.txt
の 0.5 バージョンでpipdeptree
は、オプションを使用して JSON 出力も可能になりました。このオプションを使用--json
すると、読みにくくなる代わりに、機械による解析が容易になります。