例如,以下内容是使用 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
Run Code Online (Sandbox Code Playgroud)
约束five.localsitemanager>2.0dev似乎并没有被grokcore.annotation强制执行(见https://github.com/zopefoundation/grokcore.annotation/blob/master/setup.py),但我怎么找出鸡蛋实际执行呢?
我知道这是一个非常古老的问题,但昨天我遇到了同样的问题,我的同事找到了解决问题的方法.所以我想我也可以在这里发布.
您的所有buildout鸡蛋都在eggs项目的文件夹中或.buildout主文件夹的文件夹中,包括开发蛋.在每个鸡蛋中,你会找到一个requires.txt符合鸡蛋要求的文件.这意味着您可以.buildout/eggs对特定约束的文件夹执行查找/ grep,以找出正在执行它的包.
所以在你的情况下,我建议你去egg目录(在我的情况下~/.buildout/eggs),然后做:
find .|grep requires.txt|xargs grep 2.0dev
Run Code Online (Sandbox Code Playgroud)
那应该找到强制执行约束的蛋.
在我的情况下,我升级到Django 1.7并且有一个包含约束的包'Django >= 1.4, < 1.7'.所以执行find .|grep requires.txt|xargs grep 1.7发现有问题的鸡蛋.