win_depends
🧩 win_depends is a lightweight tool to analyze DLL and EXE dependencies on Windows. It supports recursive dependency resolution, detection of missing or unused files, and exports to DOT graph format.
1.0.3
--check-missingreports missing delay-loaded dependencies and their downstream dependencies as warnings instead of missing-file errors.- A dependency still appears as an error if any non-delay-loaded path requires it.
- Missing files are deduplicated, with importing files and delayed paths shown.
- Duplicate normal/delayed imports retain the normal import's required status.
📦 Installation
pip install win_depends
🚀 Usage Example
Run the tool in a directory containing .dll and .exe files:
win_depends
You can also specify a path to a file or directory:
win_depends ./path/to/myapp.exe
win_depends ./build/bin/
Optional flags can customize the output, such as displaying a dependency tree:
win_depends ./build/bin --tree
```bash
win_depends
Optional flags can customize the output, such as displaying a dependency tree:
win_depends --tree
🔍 Features
- ✅ Analyze imports between
.dlland.exefiles, including delayed and bound imports - ✅ Detect forwarded exports and surface forwarding targets directly in tree / missing / invalid outputs (DLL name only)
- ✅ Resolve
api-ms-*/ext-ms-*contracts to host DLLs (for examplekernelbase.dll) to avoid false missing reports - ✅ Parallel dependency analysis for faster performance
- ✅ Automatic detection of system DLLs (always enabled)
- ✅ Detect missing dependent files; delay-loaded chains are reported as warnings
- ✅ Detect unused files in directory
- ✅ Tree-style output of dependencies
- ✅ Export to DOT format for graph visualization
🧪 Sample Output
Use win_depends .\demo.exe --check-missing to list missing dependencies.
Missing DLLs imported directly with delay loading, or reached only through a
delay-loaded ancestor, appear under
Missing dependencies (delay-loaded; warning only) with a warning marker.
If any non-delay-loaded path requires the same file, it remains an error.
Each file is listed once, with its importing files and delayed paths marked
[DELAY-LOADED]. These warnings do not guarantee that the affected feature will
work when the DLL is actually loaded. The command's exit-code behavior is unchanged.
For a single-file target, paths start at that file. For a directory target, dependency roots are inferred from the full graph, so scanning a DLL does not by itself make its dependencies mandatory. Rootless source cycles are treated conservatively as entry points.
$ win_depends ./demo.exe --tree
└── demo.exe
├── user32.dll ❌
├── plugin.dll
│ └── helper.dll
└── kernel32.dll ❌
Missing dependencies:
user32.dll
kernel32.dll
Metadata
Release files for win-depends 1.0.3
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 | |
|---|---|---|---|---|
| win_depends-1.0.3.tar.gz | 12.0 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| win_depends-1.0.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 25.9 kB
Release files / win_depends-1.0.3.tar.gz
| Download URL | win_depends-1.0.3.tar.gz |
|---|---|
| Size | 12.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d89acf22f43a48b4756cca760e0e9789511e40586adec0dcde8ec68060a8f634
|
|
BLAKE2b-256 checksum How to use checksums |
831eeb38da9cc221c742a7514f709c5e0bd13facfbb9e2dc99ef3f8ecdbd5aab
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.11
|
Release files / win_depends-1.0.3-py3-none-any.whl
| Download URL | win_depends-1.0.3-py3-none-any.whl |
|---|---|
| Size | 13.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fc9b7537a6029d6a1db0c93a255d5856ee3b9ae12a7dcdcb1c9b74cf83f8c5db
|
|
BLAKE2b-256 checksum How to use checksums |
13344398d71f4273715c608b428ab6f2743fad30751931c8a7e6d437a2dc435b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.11
|
Security for win-depends 1.0.3
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.