Display installed Python projects as a tree of dependencies.
- Output compatible with
requirements.txt
- Show dependencies or dependents
- Detect circular dependencies
- Detect missing dependencies
Distributions:
Source code:
$ deptree --help usage: deptree [-h] [--version] [-r] [-f] [project [project ...]] Display installed Python projects as a tree of dependencies positional arguments: project name of project whose dependencies (or dependents) to show optional arguments: -h, --help show this help message and exit --version show program's version number and exit -r, --reverse show dependent projects instead of dependencies -f, --flat show flat list instead of tree
$ deptree cryptography cryptography==2.9 # cryptography cffi==1.14.0 # cffi!=1.11.3,>=1.8 pycparser==2.20 # pycparser six==1.14.0 # six>=1.4.1
$ deptree --reverse cryptography cryptography==2.9 # - SecretStorage==3.1.2 # cryptography keyring==21.2.0 # SecretStorage>=3; sys_platform == "linux" twine==3.1.1 # keyring>=15.1
$ deptree --flat cryptography cffi==1.14.0 # pycparser cryptography==2.9 # six>=1.4.1 # cffi!=1.11.3,>=1.8 pycparser==2.20 six==1.14.0
$ deptree --flat --reverse cryptography # SecretStorage: cryptography cryptography==2.9 # twine: keyring>=15.1 keyring==21.2.0 # keyring: SecretStorage>=3; sys_platform == "linux" SecretStorage==3.1.2 twine==3.1.1
$ deptree CircularDependencyA CircularDependencyA==0.0.0 # CircularDependencyA CircularDependencyB==0.0.0 # CircularDependencyB CircularDependencyA # !!! CIRCULAR CircularDependencyA
For better comfort, use as a single-file isolated zipapp:
For example:
$ python -m pip install --target ./deptree/ deptree $ python -m zipapp --python '/usr/bin/env python' --main 'deptree.cli:main' ./deptree/ $ mv ./deptree.pyz ~/.local/bin/deptree
This way the tool can be used in virtual environments without installing it in the virtual environments. The tool can then see the projects installed in the virtual environment but without seeing itself.