how do you know which python egg is enforcing a constraint in buildout?

buildout, python

Solution

I know this is a very old question, but I had the same problem yesterday and my colleague found a way to solve the problem. So I thought I might as well post it here.

All your buildout eggs are either in an `eggs` folder in your project or in a `.buildout` folder in your home folder, including development eggs. In each egg you'll find a `requires.txt` file with the requirements for the egg. This means you can do a find/grep on the `.buildout/eggs` folder for the specific constraint to find out which package is enforcing it.

So in your case I would suggest you go to the eggs directory (in my case `~/.buildout/eggs`) and then do:

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

That should find the egg that's enforcing the constraint.

In my case I was upgrading to Django 1.7 and there was one package with the constraint `'Django >= 1.4, < 1.7'`. So executing `find .|grep requires.txt|xargs grep 1.7` found the problematic egg.

Problem

For instance the following is built with `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 ``` The constraint `five.localsitemanager>2.0dev` does not seem to be enforced by grokcore.annotation (see https://github.com/zopefoundation/grokcore.annotation/blob/master/setup.py) But how do I find out which egg is actually enforcing this?

Original source

Related problems