Tried this on one of my projects, it's neat.<p><pre><code> python3 -m import_tracker --name datasette --recursive | jq
{
"datasette": [
"aiofiles",
"click",
"markupsafe",
"mergedeep",
"pluggy",
"yaml"
],
"datasette.version": [],
"datasette.utils.shutil_backport": [
"click",
"markupsafe",
"mergedeep",
"yaml"
],
"datasette.utils.sqlite": [
"click",
"markupsafe",
"mergedeep",
"yaml"
],
"datasette.utils": [
"click",
"markupsafe",
"mergedeep",
"yaml"
],
"datasette.utils.asgi": [
"aiofiles",
"click",
"markupsafe",
"mergedeep",
"yaml"
],
"datasette.hookspecs": [
"aiofiles",
"click",
"markupsafe",
"mergedeep",
"pluggy",
"yaml"
]
}
</code></pre>
Related tool: pipdeptree - here's the output from that against a project that installs a lot of extra stuff: <a href="https://github.com/simonw/latest-datasette-with-all-plugins/blob/main/pipdeptree.txt" rel="nofollow">https://github.com/simonw/latest-datasette-with-all-plugins/...</a>