是否存在python的通用依赖项解析库?

时间:2014-12-30 18:04:18

标签: python dependency-injection dependencies dependency-management

我正在寻找可能让我定义某种“事实”和“依赖”的东西。事实之间,并定义将尝试解决这些依赖关系的函数。

类似于包管理器解析包之间的依赖关系的方式,而是一个抽象该依赖关系解析过程的库。

因为我希望能够宣称我希望事实A是真的,并且事实A也要求事实B是真的,并给出一些允许的输入要确定A和B是否为真,该系统将尽一切努力使A和B都成立。

1 个答案:

答案 0 :(得分:1)

我知道问题已经过了很长时间但是我有完全相同的问题而我在Google上找不到任何有用的内容......

TL; DR:根据this帖子,我开始研究多版本依赖项解析算法,您可以找到here。我无法保证它是正确的,但似乎完成。它更像是一个实验,但它可以通过受控数据集成功运行,并使用随机数据生成结果。

现在,我从这个过程中学到的是,很容易实现一个简单的依赖关系解析算法,该算法处理已知数据的大多数情况,并在" flat"图形。但是,如果考虑多个版本,基于范围的依赖关系(即version > 2.0 and !2.2)而不是绝对关系,多个正确的解决方案,不完整或不正确的数据,这会变得更加复杂。

在复杂情况下,最明显的问题是循环依赖关系(请参阅herehere)。这些肯定存在于软件/包管理器上。我尝试用基于回合的方法来解决它,这会导致解决方案,失败或经过多次尝试后(检测到的)循环。

最后,我试图概括问题并创建一个可重用的库。您会注意到我的主要逻辑(_resolve())比satisfy_criteria()更直接,这是依赖性接受的问题/区域特定功能。此外,循环依赖"解决方案"完全基于包管理/版本控制,很可能不适用于任何其他案例/区域。

以上让我相信,尽管大多数解决方案都涉及图形,但在某个阶段或另一个阶段,依赖解析问题不可能有高级通用解决方案。

我的下一步(给定时间)将开始阅读apt-getrpmaptitude来源并了解其他人如何解决此问题......