Display module dependencies
Project description
Python module dependency visualization. This package installs the pydeps command, and normal usage will be to use it from the command line. To install:
pip install pydeps
To create graphs you need to install Graphviz (make sure the dot command is on your path).
This is the result of running pydeps on itself (pydeps --show pydeps):
pydeps also contains an Erdős-like scoring function (a.k.a. Bacon number, from Six degrees of Kevin Bacon (http://en.wikipedia.org/wiki/Six_Degrees_of_Kevin_Bacon) that lets you filter out modules that are more than a given number of ‘hops’ away from the module you’re interested in. This is useful for finding the interface a module has to the rest of the world.
To find pydeps’ interface to the Python stdlib (less some very common modules).
pydeps pydeps --show --max-bacon 2 --pylib -x os re types _* enum
--max-bacon 2 gives the modules that are at most 2 hops away, and modules that belong together have similar colors. Compare that to the output without the --max-bacon 2 filter:
pydeps can detect and display cycles with the --show-cycles parameter. This will _only_ display the cycles, and for big libraries it is not a particularly fast operation. Given a folder with the following contents (this uses yaml to define a directory structure, like in the tests):
relimp: - __init__.py - a.py: | from . import b - b.py: | from . import a
pydeps relimp --show-cycles displays:
.. image:: https://dl.dropboxusercontent.com/u/94882440/pydeps-cycle.svg
An attempt has been made to keep the intermediate formats readable, eg. the output from pydeps --show-deps .. looks like this:
... "pydeps.mf27": { "imported_by": [ "__main__", "pydeps.py2depgraph" ], "kind": "imp.PY_SOURCE", "name": "pydeps.mf27", "path": "pydeps\\mf27.py" }, "pydeps.py2depgraph": { "imported_by": [ "__main__", "pydeps.pydeps" ], "imports": [ "pydeps.depgraph", "pydeps.mf27" ], "kind": "imp.PY_SOURCE", "name": "pydeps.py2depgraph", "path": "pydeps\\py2depgraph.py" }, ...
Usage:
usage: pydeps-script.py [-h] [-v] [-o file] [-T FORMAT] [--show] [--show-deps] [--show-dot] [--debug] [--pylib] [--pylib-all] [-x EXCLUDE [EXCLUDE ...]] fname positional arguments: fname filename optional arguments: -h, --help show this help message and exit -v, --verbose be more verbose (-vv, -vvv for more verbosity) -o file write output to 'file' -T FORMAT output format (svg|png) --show call external program to display graph --show-deps show output of dependency analysis --show-dot show output of dot conversion --debug turn on all the show and verbose options --pylib include python std lib modules --pylib-all include python all std lib modules (incl. C modules) -x EXCLUDE [EXCLUDE ...], --exclude EXCLUDE [EXCLUDE ...] input files to skip
You can of course import pydeps from Python (look in the tests/test_relative_imports.py file for examples.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.