============== conda-depgraph ==============

A command-line utility to plot Conda dependency graphs.

About

Visualizing the dependency graph of Conda packages comes in handy for understanding why a parcticular package is installed. conda-depgraph plots the graph on the command line, so there's no need to fire up a Jupyter notebook.

For example, listing all the packages that (indirectly) depend on MKL in a particular environment is as easy as

.. code-block:: console

$ conda depgraph in mkl

::

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β” β”‚matplotlibβ”‚ β”‚pyfitsβ”‚ β””β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”¬β”€β”€β”˜ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ v v β”Œβ”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚numpyβ”‚ β”‚numpy-baseβ”‚ β””β”€β”€β”¬β”€β”€β”˜ β””β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ └────┐ β”‚ β”‚ β”‚ v v β”Œβ”€β”€β”€β”€β”€β” β”‚ mkl β”‚ β””β”€β”€β”€β”€β”€β”˜

Installation

conda-depgraph can be installed as follows:

.. code-block:: console

$ conda install -n base -c omegacen conda-depgraph

It can either be installed into its own conda environment, or into the base environment.

Installing it in the base environment has the benefit that the conda depgraph command is available in all other environments. However, you will have to make sure that java is available on $PATH.

Installing it in its own environment automatically ensures it can find java, but then you will have to activate that environment before you can run conda depgraph.

Usage

After installation a new Conda command is available:

.. code-block:: console

$ conda depgraph [--help] [--from-channels] [--from-env [--name=] [--prefix=]] [--output-names] [--output-graph] [--output-graphml] [in [--distance=] ] [out [--distance=] ] [inout [--distance=] ]

depgraph can plot dependency graphs from either cached repository data, or from an existing Conda environment. The latter is the default behaviour. If the target environment is not specified via either --name or --prefix, the current environment is used.

The subcommands (in, out, inout) restrict the output to a subgraph of the full dependency graph of the environment. The subcommands can be arbitrarily nested to iteratively restrict the output graph.

Examples

The direct dependencies of conda:

.. code-block:: console

$ conda depgraph --name=base out --distance=1 conda

::

                     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                     β”‚    conda    β”‚
                     β””β”€β”¬β”€β”¬β”€β”€β”€β”¬β”¬β”¬β”€β”¬β”€β”˜
                       β”‚ β”‚   β”‚β”‚β”‚ β”‚
     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚   β”‚β”‚β”‚ └─────────────────────────┐
     β”‚            β”Œβ”€β”€β”€β”€β”€β”€β”˜   ││└─────────────────────┐     β”‚
     β”‚            β”‚          └┼──────────┐           β”‚     β”‚
     β”‚            β”‚           β”‚          β”‚           β”‚     β”‚
     v            v           v          v           v     β”‚

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚setuptoolsβ”‚ β”‚ruamel_yamlβ”‚ β”‚pycosatβ”‚ β”‚pyopensslβ”‚ β”‚requestsβ”‚ β”‚ β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜ β””β”¬β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”¬β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └──────┐ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ └─────────────────┐ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ v v v v v v β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ python β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

The immediate neighborhood of sqlite:

.. code-block:: console

$ conda depgraph --name=base inout --distance==1 sqlite

::

  β”Œβ”€β”€β”€β”€β”€β”€β”
  β”‚pythonβ”‚
  β””β”€β”€β”€β”¬β”€β”€β”˜
      β”‚
      v
  β”Œβ”€β”€β”€β”€β”€β”€β”
  β”‚sqliteβ”‚
  β””β”¬β”€β”€β”€β”¬β”€β”˜
   β”‚   β”‚
   β”‚   └────┐
   β”‚        β”‚
   v        v

β”Œβ”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β” β”‚libeditβ”‚ β”‚zlibβ”‚ β””β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”˜

Everything in between sqlite and ncurses:

.. code-block:: console

$ conda depgraph --name base out sqlite in ncurses

::

β”Œβ”€β”€β”€β”€β”€β”€β” β”‚sqliteβ”‚ β””β”€β”€β”€β”¬β”€β”€β”˜ β”‚ v β”Œβ”€β”€β”€β”€β”€β”€β”€β” β”‚libeditβ”‚ β””β”€β”€β”€β”¬β”€β”€β”€β”˜ β”‚ v β”Œβ”€β”€β”€β”€β”€β”€β”€β” β”‚ncursesβ”‚ β””β”€β”€β”€β”€β”€β”€β”€β”˜

A list of the direct dependencies of Python, plus Python itself:

.. code-block:: console

$ conda depgraph --name base --output-names out --distance=1 python

::

libcxx libffi ncurses openssl python readline sqlite tk xz zlib

A list of all packages that require Python, plus Python itself:

.. code-block:: console

$ conda depgraph --name base --output-names in --distance=1 python

::

asn1crypto beautifulsoup4 certifi cffi chardet click conda conda-build conda-verify cryptography filelock future glob2 idna jinja2 markupsafe pip pkginfo psutil py-lief pycosat pycparser pycrypto pyopenssl pysocks python python-libarchive-c python.app pytz pyyaml requests ruamel_yaml setuptools six tqdm urllib3 wheel

Use data from cached channels:

.. code-block:: console

$ conda depgraph --from-channels out --distance=1 jupyter

::

               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
               β”‚    jupyter    β”‚
               β””β”¬β”¬β”€β”€β”€β”¬β”€β”€β”€β”€β”¬β”¬β”¬β”¬β”€β”˜
                β”‚β”‚   β”‚    β”‚β”‚β”‚β”‚
                β”‚β”‚   β”‚    │││└──────────────────┐
       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”˜   β”‚    β”‚β”‚β”‚                   β”‚
       β”‚        β”‚    β”‚    β”‚β”‚β”‚                   β”‚
       v        β”‚    β”‚    β”‚β”‚β”‚                   β”‚
 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚    β”‚    β”‚β”‚β”‚                   β”‚
 β”‚ipywidgetsβ”‚   β”‚    β”‚    β”‚β”‚β”‚                   β”‚
 β””β”€β”€β”¬β”€β”€β”¬β”€β”€β”¬β”€β”˜   β”‚    β”‚    β”‚β”‚β”‚                   β”‚
    β”‚  β”‚  β”‚     β”‚    β”‚    β”‚β”‚β”‚                   β”‚
β”Œβ”€β”€β”€β”˜  β”‚  β”‚     β”‚    β”‚    β”‚β”‚β”‚                   β”‚
β”‚β”Œβ”€β”€β”€β”€β”€β”˜  β”‚     β”‚    β”‚    │└┼─────────┐         β”‚
β”‚β”‚        └─────┼─┐  β”‚    β”‚ β”‚         β”‚         β”‚
β”‚β”‚      β”Œβ”€β”€β”€β”€β”€β”€β”€β”˜ β”‚  β”‚    β”‚ β”‚         β”‚         β”‚
β”‚β”‚      β”‚         β”‚  β”‚    β”‚ β”‚         β”‚         β”‚
β”‚β”‚      v         v  v    β”‚ β”‚         v         β”‚
β”‚β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚β”‚ β”‚qtconsoleβ”‚ β”‚notebookβ”‚ β”‚ β”‚ β”‚jupyter_consoleβ”‚ β”‚
β”‚β”‚ β””β”€β”€β”€β”¬β”€β”€β”¬β”€β”€β”˜ β””β”€β”€β”¬β”€β”¬β”€β”¬β”€β”˜ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜ β”‚
β”‚β”‚     β”‚  β”‚       β”‚ β”‚ β”‚   β”‚ └──┐    β”‚   β”‚       β”‚
β”‚β”‚     β”‚  β”‚       β”‚ β”‚ β”‚   └────┼────┼┐  β”‚       β”‚
β”‚β”‚     β”‚  β”‚       β”‚ β”‚ └──────┐ β”‚    β”‚β”‚  β”‚       β”‚
│└─────┼──┼┐      β”‚ β”‚        β”‚ β”‚    β”‚β”‚  β”‚       β”‚
β”‚     β”Œβ”Όβ”€β”€β”Όβ”Όβ”€β”€β”€β”€β”€β”€β”˜ β”‚        β”‚ β”‚    β”‚β”‚  β”‚       β”‚
β”‚     β”‚β”‚  β”‚β”‚     β”Œβ”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”Όβ”€β”€β”€β”€β”˜β”‚  β”‚       β”‚
β”‚     β”‚β”‚  β”‚β”‚     β”‚ β”Œβ”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”Όβ”€β”€β”€β”€β”€β”Όβ”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”˜
β”‚     β”‚β”‚  β”‚β”‚     β”‚ β”‚β”‚        β”‚ β”‚     β”‚  β”‚
β”‚     β”‚β”‚  vv     v vv        v v     β”‚  β”‚
β”‚     β”‚β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚  β”‚
β”‚     β”‚β”‚ β”‚ ipykernel β”‚  β”‚nbconvertβ”‚  β”‚  β”‚
β”‚     β”‚β”‚ β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜  β””β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚  β”‚
β”‚     β”‚β”‚       β”‚         β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β”‚     β”‚β”‚       └───────┐ β”‚ β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚     └┼─────────────┐ β”‚ β”‚ β”‚  β”‚
β”‚      └───────────┐ β”‚ β”‚ β”‚ β”‚  β”‚
└────────────────┐ β”‚ β”‚ β”‚ β”‚ β”‚  β”‚
                 β”‚ β”‚ β”‚ β”‚ β”‚ β”‚  β”‚
                 v v v v v v  v
               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
               β”‚    python     β”‚
               β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Similar projects

Conda Depgraph

A command-line utility to plot the dependency graph of a Conda environment.

Conda Depgraph Info

⭐ Stars 32
πŸ”— Source Code github.com
πŸ•’ Last Update a year ago
πŸ•’ Created 3 years ago
🐞 Open Issues 2
βž— Star-Issue Ratio 16
😎 Author omegacen