构建一个python项目的内部和外部依赖关系图。

grimp的Python项目详细描述


https://img.shields.io/pypi/v/grimp.svgPython versionshttps://api.travis-ci.com/seddonym/grimp.svg?branch=master

构建一个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',
}

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何解决连接设备中的显示仿真器安卓 studio不止一个   java setOnClickListener错误,仅适用于平板电脑(10“)?   java如何将VSAM文件内容导出为可在windows中查看?   url JSP不会打开CSS、图像和JS   java在hibernate中有多级结构吗   以Java字节存储颜色;字节字节vs.字节[3]vs.整数   后台异步任务中的java Json请求未返回数据   仅在Linux WebLogic上引发java DuplicateKeyException   java执行MessageDigest时MessageDigest在做什么。是否多次更新?   仅在maven上发生java泛型编译错误   java如何在webview中显示具有图像的特定div   java自定义JSON序列化和反序列化   java是一个从JSON数组收集数据的arraylist   java CardView无法正确展开   java将目录上载到远程服务器   java Apache Camel:拆分器、CBR还是动态路由器?   java如何在GXT中禁用DualListField的“添加选定”按钮?   Java:查找数字是否为2的幂