pip包依赖关系可视化

原创工具程序,使用Graphviz将pip包的依赖关系图可视化,效果如下图所示
效果图
其中红色表示没有入边的顶点

代码如下

import subprocess

import pip._internal.commands.list as list_cmd
import pip._internal.commands.show as show_cmd


def run():
    with open('pip_libs.dot', 'w', encoding='utf8') as f:
        f.write('digraph G {\n')
        packages = list_cmd.get_installed_distributions()
        pkg_infos = list(show_cmd.search_packages_info([p.project_name for p in packages]))
        for info in pkg_infos:
            if not info['required_by']:
                f.write('"{}" [color="red"];\n'.format(info['name']))
            else:
                f.write('"{}";\n'.format(info['name']))
        for info in pkg_infos:
            for p in info['required_by']:
                f.write('"{}" -> "{}";\n'.format(p, info['name']))
        f.write('}\n')
    try:
        subprocess.run(['dot', '-Tpng', 'pip_libs.dot', '-o', 'pip_libs.png'])
        print('关系图已输出到pip_libs.png')
    except FileNotFoundError:
        print('未安装Graphviz,关系图已输出到pip_libs.dot')


if __name__ == '__main__':
    run()
一、你的困惑在本地开发环境下,你的多个python项目之间使用的相同依赖版本不同、使用的python版本也不同,你该如何操作呢?你本地开发的一个python项目依赖了很多,要部署上线时,有没有更简单的方式,批量安装并维护升级这些依赖呢?你开发了一个优秀的python项目,想要开源到python官方pypi仓库,setuptools麻烦且不好理解,有没有更简单且上手相当快的工具呢?你公司搭建了私有pypi仓库,让你把项目打上传,突然你蒙了?如何使用一个工具“一站式”解决上述所有困惑呢? 二、课程特色1.通过思维导图有条理地讲述课程知识点,让学员能够轻松、高效地掌握所有内容2.全课程会结合四大实际案例,带领学员手把手操作,绝不纸上谈兵3.购买课程的学员,能获得课程相关的代码、思维导图课件资料4.购买课程的学员,均能免费享受授课老师一对一地指导服务 三、课程适合人群1.有python基础的学员2.在本地开发环境下,不知道如何管理多个python项目的学员3.对于python项目依赖管理、线上部署python项目有疑问的学员4.不知道如何将python项目开源到pypi中的学员5.不知道如何搭建公司私有pypi仓库的学员 四、学生将从这门课程学到什么?1.本地开发环境下,python虚拟环境的管理2.python项目依赖的安装、升级、维护管理3.python项目打python官方pypi仓库4.公司私有pypi仓库搭建方法5.python项目打到公司私有pypi仓库6.pip版本类型描述、poetry版本类型描述7.poetry命令行,pyproject.toml配置文件解析
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值