构建一个python项目的内部和外部依赖关系图。
grimp的Python项目详细描述
构建一个python项目的内部和外部依赖关系图。
- 免费软件:BSD许可证
警告:此软件当前处于测试阶段。它正在进行积极的发展,突破性的变化可能是 在两个版本之间引入。
快速启动
安装grimp:
pip install grimp
安装要分析的python包:
pip install somepackage
在python中,为包构建导入图:
>>> import grimp >>> graph = grimp.build_graph('somepackage')
现在可以使用graph对象来分析包。一些示例:
>>> graph.find_children('somepackage.foo') { 'somepackage.foo.one', 'somepackage.foo.two', } >>> graph.find_descendants('somepackage.foo') { 'somepackage.foo.one', 'somepackage.foo.two', 'somepackage.foo.two.blue', 'somepackage.foo.two.green', } >>> graph.find_modules_directly_imported_by('somepackage.foo') { 'somepackage.bar.one', } >>> graph.find_upstream_modules('somepackage.foo') { 'somepackage.bar.one', 'somepackage.baz', 'somepackage.foobar', } >>> graph.find_shortest_chain(importer='somepackage.foobar', imported='somepackage.foo') ( 'somepackage.foobar', 'somepackage.baz', 'somepackage.foo', ) >>> graph.get_import_details(importer='somepackage.foobar', imported='somepackage.baz')) [ { 'importer': 'somepackage.foobar', 'imported': 'somepackage.baz', 'line_number': 5, 'line_contents': 'from . import baz', }, ]
默认情况下,不包括外部依赖项。可以这样覆盖:
>>> graph = grimp.build_graph('somepackage', include_external_packages=True) >>> graph.find_modules_directly_imported_by('somepackage.foo') { 'somepackage.bar.one', 'os', 'decimal', 'sqlalchemy', }