Подтвердить что ты не робот

Есть ли способ показать деревья зависимостей для пакетов 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

Есть ли способ показать зависимости установленных пакетов пакетов?

4b9b3361

Ответ 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