Is there any way to show the dependency trees for pip packages?

Each Answer to this Q is separated by one/two green lines.

I have a project with multiple package dependencies, the main requirements being listed in requirements.txt. When I call pip freeze it prints the currently installed packages as plain list. I would prefer to also get their dependency relationships, something like this:

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

The goal is to detect the dependencies of each specific package:

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

And insert these into my current requirements.txt. For example, for this input:

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

I would like to get:

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

Is there any way show the dependencies of installed pip packages?

You should take a look at 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

It doesn’t generate a requirements.txt file as you indicated directly. However the source (255 lines of python code) should be relatively easy to modify to your needs, or alternatively you can (as @MERose indicated is in the pipdeptree 0.3 README ) out use:

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

The 0.5 version of pipdeptree also allows JSON output with the --json option, that is more easily machine parseble, at the expense of being less readable.

Warning: py2 only / abandonware

yolk can display dependencies for packages, provided that they

  • were installed via setuptools
  • came with metadata that includes dependency information

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

You can do it by installing pipdeptree package.

Open command prompt in your project folder. If you are using any virtual environment, then switch to that virtual environment.

Install pipdeptree package using pip

pip install pipdeptree
pipdeptree -fl

This package will list all the dependencies of your project.

For more pipdeptree

enter image description here


The answers/resolutions are collected from stackoverflow, are licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0 .

Leave a Reply

Your email address will not be published.