【发布时间】:2022-02-08 22:55:17
【问题描述】:
我在一家拥有几个私有存储库的公司工作 - 所有这些都主要用 Python 编写。
每个 repo 在其根目录下都有一个 requirements.txt 文件。
我们有兴趣列出每个存储库的依赖项和依赖项,而不是公共依赖项,而只是我们的私有依赖项和依赖项。
例如,假设 our_private_package1 的 requirements.txt 文件如下所示:
public_package1
public_package2
public_package3
our_private_package2
our_private_package3
还假设有另一个包our_private_package4 具有以下requirements.txt 文件:
public_package2
public_package4
our_private_package1
所以我们想构建一个依赖关系图,我们可以在其中看到 our_private_package1 的以下内容:
依赖:
- our_private_package2
- our_private_package3
家属:
- our_private_package4
理想情况下,我们希望用图表来可视化依赖关系。
2 个注释:
- GitHub's solution 不适合这里有两个原因。首先,它 仅显示公共依赖项。也不能确定 私有存储库的依赖项(依赖项是否是公共的 或私人)。
- 依赖项不应是可传递的。在上面的例子中,
our_private_package2不应该被列为our_private_package4的依赖项(尽管我们 应该在视觉表示中看到一条从our_private_package2到our_private_package4,具有从our_private_package2到our_private_package1的定向分支和 从our_private_package1到our_private_package4的另一个分支)。
如果没有针对此类问题的可用工具,我至少想要一些指导如何使用一些 Python 代码来解决(几乎可以肯定它是可行的)。
【问题讨论】:
-
为什么不直接使用Github's solution?
-
它只显示公共依赖。它也不能确定私有存储库的依赖项(依赖项是公共的还是私有的)。
-
依赖可以/应该是传递的吗?我的意思是,如果
our_private_package5依赖于our_private_package4,是否应该将其列为依赖于our_private_package1?我最近遇到了类似的问题,并且开发了一些自定义的东西(仅使用 Python 的 dicts、lists 和 sets,导出到 json 和 graphviz)。 -
我更喜欢依赖不是传递的(尽管如果它们是传递的,它仍然提供有用的信息)。我希望我已经澄清了我在编辑后的问题中寻找的内容。在@0x263A 的问题之后,我还添加了我在第一条评论中所做的澄清。
标签: python github dependencies