你怎么知道哪个python egg在buildout中强制执行约束?

时间:2013-12-13 05:23:14

标签: python buildout

例如,以下内容是使用bin/buildout -Nvv

构建的
...
Getting required 'grokcore.component>=2.5'
  required by five.grok 1.3.2.
  required by grokcore.viewlet 1.11.
Picked: grokcore.component = 2.5
Getting required 'grokcore.annotation'
  required by five.grok 1.3.2.
Picked: grokcore.annotation = 1.3
The constraint, 0.4, is not consistent with the requirement, 'five.localsitemanager>2.0dev'.
While:
  Installing instance.
Error: Bad constraint 0.4 five.localsitemanager>2.0dev

约束five.localsitemanager>2.0dev似乎没有被grokcore.annotation强制执行(请参阅https://github.com/zopefoundation/grokcore.annotation/blob/master/setup.py)但是如何找出实际执行此操作的鸡蛋?

1 个答案:

答案 0 :(得分:6)

我知道这是一个非常古老的问题,但昨天我遇到了同样的问题,my colleague找到了解决问题的方法。所以我想我也可以在这里发布它。

您的所有buildout鸡蛋都位于项目的eggs文件夹中或主文件夹中的.buildout文件夹中,包括开发鸡蛋。在每个鸡蛋中,您将找到一个requires.txt文件,其中包含鸡蛋的要求。这意味着您可以在.buildout/eggs文件夹上查找特定约束的查找/ grep,以找出正在执行它的包。

所以在你的情况下我会建议你去egg目录(在我的情况下是~/.buildout/eggs),然后做:

find .|grep requires.txt|xargs grep 2.0dev

那应该找到强制执行约束的蛋。

在我的情况下,我正在升级到Django 1.7,并且有一个包含约束'Django >= 1.4, < 1.7'的包。因此执行find .|grep requires.txt|xargs grep 1.7发现了有问题的鸡蛋。