Skip to content

Instantly share code, notes, and snippets.

@inklesspen
Created June 3, 2016 21:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save inklesspen/d77c7c879f2f8323d619a5c6ecf4bb62 to your computer and use it in GitHub Desktop.
Save inklesspen/d77c7c879f2f8323d619a5c6ecf4bb62 to your computer and use it in GitHub Desktop.
import graphviz
import pkg_resources
pkg_keys = {}
for item in pkg_resources.working_set:
r = item.as_requirement()
pkg_keys[r.key] = r.project_name
depends = {}
for item in pkg_resources.working_set:
depends[item.as_requirement().key] = [r.key for r in item.requires()]
# so from here you could do a lot of interesting things with the depends dict
# here we'll just make a pretty unreadable graphviz dotfile
dot = graphviz.Digraph(comment="dependencies")
for pkg_key, pkg_name in pkg_keys.items():
dot.node(pkg_key, pkg_name)
for pkg_key, dependencies in depends.items():
for dependency in dependencies:
dot.edge(pkg_key, dependency)
print dot.source
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment