利用pip的依赖图

1 投票
2 回答
2030 浏览
提问于 2025-04-17 18:09

我想写一个可视化工具,来展示通过pip安装的所有Python包之间的依赖关系图。不过我遇到的问题是,代码的文档写得很糟糕,我找不到源代码中存储这个图的地方。

我希望有人对pip的源代码有足够的了解,可以帮我解决这个问题。

另外,我是Python的新手,不太确定是应该直接在现有的源代码上做修改,还是写一个新的模块来实现这个功能,不过我更倾向于后者。

// 编辑:我可以通过pip freeze获取所有已安装的模块,但这只给我一个没有依赖关系的列表。所以我需要找到一种方法,从这个列表中提取出依赖关系。

2 个回答

1

是的,如果你不习惯的话,这段代码确实很难看懂。我不记得有类似的东西,而且我也不会使用它。你可能会发现 distlib 更适合你,它有一个专门处理这个问题的模块:https://distlib.readthedocs.org/en/latest/depgraph.html

0

这是我在搜索过程中发现的内容:

Pip内部根本不使用依赖关系图。(截至版本1.3.X)

所以一个解决办法是这样做:

如果你还没有安装setuptools,可以先安装它。它会带来一个叫做pkg_resources的模块。这个模块提供了所有工具,可以查看你想要的分发目录中所有已安装的模块(不仅仅是通过pip安装的模块)。然后,你可以使用pkg_resources中包含的方法读取这些模块的元数据(包括需求和依赖关系)。

撰写回答