web-dev-qa-db-fra.com

Existe-t-il un moyen d'afficher les arbres de dépendance pour les packages pip?

J'ai un projet avec plusieurs dépendances de package, les principales exigences étant répertoriées dans requirements.txt. Lorsque j'appelle pip freeze, Il affiche les packages actuellement installés sous forme de liste simple. Je préférerais également obtenir leurs relations de dépendance, quelque chose comme ceci:

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

Le but est de détecter les dépendances de chaque package spécifique:

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

Et insérez-les dans mon requirements.txt Actuel. Par exemple, pour cette entrée:

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

Je voudrais obtenir:

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

Existe-t-il un moyen d'afficher les dépendances des packages pip installés?

62
tbicr

Vous devriez jeter un œil à 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

Il ne génère pas de requirements.txt fichier comme vous l'avez indiqué directement. Cependant, la source (255 lignes de python) devrait être relativement facile à modifier selon vos besoins, ou bien vous pouvez (comme @MERose indiqué est dans le pipdeptree 0.3 README) hors utilisation:

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

La version 0.5 de pipdeptree permet également la sortie JSON avec le --json, qui est plus facilement analysable en machine, au détriment d'être moins lisible.

101
Anthon

yolk peut afficher les dépendances des packages, à condition qu'ils

  • ont été installés via setuptools
  • est venu avec des métadonnées qui incluent des informations de dépendance

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