[Distutils] distribute and buildout: best practices?

Reinout van Rees reinout at vanrees.org
Wed Oct 7 15:55:10 CEST 2009

On 2009-10-07, Tarek Ziadé <ziade.tarek at gmail.com> wrote:
> On Wed, Oct 7, 2009 at 2:32 PM, Reinout van Rees <reinout at vanrees.org> wrote:
>> I'm still not 100% sure whether it is safe to put "distribute" in the
>> install_requires list of a package right now, however.
> It depends on what you mean by safe. (beside any bootstraping bug we might
> find in the near future, even if this code seems stabilized now)
> Adding distribute in install_requires will have the effect of calling the
> Distribute setup.py and renaming an existing setuptools installation
> detected in the environment so it doesn't get on the way, and to add a
> setuptools*.egg-info in the environment so the Setuptools dependency is
> still met (to avoid Distribute to be overriden in turn)
> By "environment" I mean here the sys.path than gets scanned by pkg_resources
> when looking for Distributions.
> So when your package is installed, its impact will depend on the environment
> its setup.py was called in.
> The impact is : now the environment is using Distribute.

Ok, I've experimented some more and came to some sort of conclusion in the bug
report: http://tinyurl.com/yaa23yl

The warning problem occurs if the environment (which you mention above) uses
distribute.  This environment could be a buildout egg cache.  If a buildout,
which uses this cache, only knows about setuptools (as there's no distribute
depencency in that buildout), you'll get the extra "hey, I already loaded
this" UserWarnings.

But, and that's the mostly-good news, these warnings only occur if you have a
global setuptools and haven't installed distribute globally yet.  In that
case, somehow there's a fallback to the global setuptools which omits those

IF warnings THEN install it also globally, basically.

And, from what I see, a global install works just fine with a buildout that
doesn't use the new bootstrap.  Provided the setuptools in the egg cache has
been patch already by some other buildout :-)


Reinout van Rees - reinout at vanrees.org - http://reinout.vanrees.org
Software developer at http://www.thehealthagency.com
"Military engineers build missiles. Civil engineers build targets"

More information about the Distutils-SIG mailing list