direct-deps

Table of Contents
Introduction
A utility to analyze a Python project and its virtual environment to identify direct dependencies. Helps you keep your dependency list lean and accurate.
The tool automatically detects common virtual environment setups including:
- Current activated virtual environment (
$VIRTUAL_ENV
)
- Local
.venv
or venv
directories
- Hatch environments
- Pipenv environments
Installation
Installation is optional! You can run direct-deps
without installing it using uvx
or pipx run
.
# Optional: Install globally
pipx install direct-deps
Usage
Run without installation (Recommended)
The easiest way to use direct-deps
is to run it directly without installation. The tool will automatically detect your project's virtual environment:
uvx direct-deps .
pipx run direct-deps .
uvx direct-deps src
uvx direct-deps tests
Recommendation
To split packages and dev-packages you can do the following.
├── pyproject.toml
├── src
│ └── comma-cli
│ └── ...
└── tests
└── ...
$ uvx direct-deps src
Direct Dependencies:
- persistent-cache-decorator
- requests
- rich
- setuptools-scm
- typedfzf
- typer
$ uvx direct-deps tests
Direct Dependencies:
- pytest
- runtool
- tomlkit
- typer
[project]
dependencies = [
"persistent-cache-decorator",
"requests",
"rich",
"setuptools-scm",
"typedfzf",
"typer",
]
[project.optional-dependencies]
dev = [
"pytest",
"runtool",
"tomlkit",
]
Limitations
This tool relies on being able to look at the import <package>
and from <package> import ...
as
well as use your virtualenv to find the appropriate package name. This means that anything
not imported directly will not appear in the list such as plugins (pytest-cov) and static analysis tools (ruff, pre-commit).
License
direct-deps
is distributed under the terms of the MIT license.