There is no simple, native way to get the dependency tree of a Python virtual environment using the Pip package manager for Python. Pip Tree fixes this problem by retrieving every package from your virtual environment and returning a list of JSON objects that include the package name, version installed, date updated, and which packages are required by each package (the tree).
Install
# Homebrew install
brew tap justintime50/formulas
brew install pip-tree
# Install Pip Tree globally
pip3 install pip-tree
# Install Pip Tree into the virtual environment of the project you want to run it on
venv/bin/pip install pip-tree
# Install locally
just install
Usage
Virtual Env Usage:
pip-tree
Global Usage:
pip-tree --path "path/to/my_project/venv/lib/python3.9/site-packages"
Options:
-h, --help show this help message and exit
-p PATH, --path PATH The path to the site-packages directory of a Python virtual environment. If a path is not provided, the virtual environment Pip Tree is run from will be used.
--version show program's version number and exit
Sample Output
Generating Pip Tree Report...
[
{
"name": "docopt",
"version": "0.6.2",
"updated": "2021-05-12",
"requires": [],
"required_by": [
"coveralls"
]
},
{
"name": "flake8",
"version": "3.9.2",
"updated": "2021-05-12",
"requires": [
"mccabe<0.7.0,>=0.6.0",
"pyflakes<2.4.0,>=2.3.0",
"pycodestyle<2.8.0,>=2.7.0"
],
"required_by": []
},
{
"name": "Flask",
"version": "2.0.0",
"updated": "2021-05-12",
"requires": [
"click>=7.1.2",
"itsdangerous>=2.0",
"Jinja2>=3.0"
"Werkzeug>=2.0",
],
"required_by": []
}
]
Pip Tree report complete! 40 dependencies found for "path/to/my_project/venv/lib/python3.12/site-packages".
Package
In addition to the CLI tool, you can use functions to retrieve the list of packages and their details from a Python virtual environment in your own code:
import pip_tree
path = 'path/to/my_project/venv/lib/python3.12/site-packages'
package_list = pip_tree.get_pip_package_list(path)
for package in package_list:
package_details = pip_tree.get_package_details(package)
print(package_details['name'])
Development
# Get a comprehensive list of development tools
just --list
Metadata
Release files for pip-tree 5.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| pip_tree-5.0.0.tar.gz | 6.2 kB | Without provenance | Details for pip_tree-5.0.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pip_tree-5.0.0-py3-none-any.whl | Python 3 | none | any | Details for pip_tree-5.0.0-py3-none-any.whl |
Total release size: 13.4 kB
Release files / pip_tree-5.0.0.tar.gz
| Download URL | pip_tree-5.0.0.tar.gz |
|---|---|
| Size | 6.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
12924e23b000db48d48ca5772c26c1e39f00f7ce507b202a0b05724caee687e2
|
|
BLAKE2b-256 checksum How to use checksums |
52f88475f773f06ee979ff17165b386c4127c01644e4f95b0f950db4dd29ef80
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / pip_tree-5.0.0-py3-none-any.whl
| Download URL | pip_tree-5.0.0-py3-none-any.whl |
|---|---|
| Size | 7.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d9a5b97d5944cb04d65f9f71d0d1cf2d6c1b9a7cdfda0a11afbf40328270d8d2
|
|
BLAKE2b-256 checksum How to use checksums |
d5b3780aca26a6e9aaea7bd80e7c179c2c138c0f118191e3f030c646ce8cb080
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Security for pip-tree 5.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.