pipdeptree displays installed Python packages as a dependency tree.
pip freeze shows a flat list; pipdeptree adds parent-child
relationships and reports dependency conflicts or cycles.
pip install pipdeptree
pipdeptreeFlask==0.10.1
┣━━ ✓ itsdangerous required: >=0.21 installed: 0.24
┣━━ ✓ Jinja2 required: >=2.4 installed: 2.11.2
┃ ┗━━ ⚠ MarkupSafe required: >=0.23 installed: 0.22
┗━━ ✓ Werkzeug required: >=0.7 installed: 0.11.2
Find packages that require a dependency:
pipdeptree --reverse --packages markupsafeOutput as JSON, Mermaid, or Graphviz:
pipdeptree -o json
pipdeptree -o mermaid
pipdeptree -o graphviz-svg > deps.svgReport package counts, depth, conflicts, cycles, licenses and size:
pipdeptree --summary # aligned text
pipdeptree --summary -o rich # styled table
pipdeptree --summary -o json # machine-readableInspect a tree without installing it. Resolve requirements against a package index, or read a resolved PEP 751 lock offline:
pipdeptree from-index "flask" # i is a shorthand alias
pipdeptree from-index --requirements requirements.txt
pipdeptree from-lock pylock.toml # l is a shorthand aliasThe render flags above, including --summary, work with both subcommands.
For the full documentation, visit pipdeptree.readthedocs.io.