Есть ли способ показать деревья зависимостей для пакетов pip?
У меня есть проект с несколькими зависимостями пакетов, основные требования перечислены в 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
Есть ли способ показать зависимости установленных пакетов пакетов?
Ответы
Ответ 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) должен быть относительно легко модифицировать в соответствии с вашими потребностями или, альтернативно, вы можете использовать (как указано в пункте @MERose в файле pipdeptree 0.3 README):
pipdeptree --freeze --nowarn | grep -P '^[\w0-9\-=.]+' > requirements.txt
Версия версии pipdeptree
версии 0.5 также позволяет выводить JSON с опцией --json
, что более легко обрабатывается машиной, за счет того, что она менее читаема.
Ответ 2
yolk
может отображать зависимости для пакетов при условии, что они
- были установлены через
setuptools
-
появились метаданные, содержащие информацию о зависимости
$ yolk -d Theano
Theano 0.6.0rc3
scipy>=0.7.2
numpy>=1.5.0