[Distutils] why this version spec does not work?

Jim Fulton jim at zope.com
Mon Aug 23 20:48:16 CEST 2010

On Mon, Aug 23, 2010 at 12:46 PM, Adam GROSZER <agroszer at gmail.com> wrote:
> Hello,
> I have here this version spec in setup.py:
> 'zope.testing >=3.6.0,<3.10.0',
> but zc.buildout does not get it right.
> Source is here:
> svn://svn.zope.org/repos/main/zc.recipe.testrunner/branches/1.2.1
> Output is here:
> http://paste.lisp.org/+2FSQ
> Why on earth does zc.buildout pick zope.testing = 3.10.0 with the
> above spec??

If you look earlier in the output you provide a link to, buildout does
get it right.  It picks 3.9.5.

Then, when zc.recipe.testrunner runs, it tries to load zope.testing

  eggs, ws = self.egg.working_set(('zope.testing', ))

It doesn't restrict the version here.  This didn't cause a problem
until you added the restriction in in setup.py.

Anyone not interested in the implementation of zc.recipe.testrunner should
stop reading here, if you haven't already. :)

self.egg implies zc.recipe.testrunner, so the low-level buildout APIs
are asked to create a working set for zc.recipe.testrunner and
zope.testing.  It happens to load packages in a breadth first order
and gets the newest version of zope.testing before it tries to get the
restricted dependency of zc.recipe.testrunner.

The easiest way to fix this is to remove the redundant and now
incorrect reference to zope.testing in the call to

  eggs, ws = self.egg.working_set()


Jim Fulton

More information about the Distutils-SIG mailing list