[Python-Dev] Distutils and Distribute roadmap (and some words on Virtualenv, Pip)

Ian Bicking ianb at colorstudy.com
Fri Oct 9 18:23:29 CEST 2009


On Fri, Oct 9, 2009 at 3:54 AM, kiorky <kiorky at cryptelium.net> wrote:
>> If I had my way, buildout would use virtualenv and throw away its
>> funny script generation.  If virtualenv had existed before buildout
>
> Which one, the one provided to generate scripts from entry points with the *.egg
> recipes or the bin/buildout auto regeneration?

Well, if multi-versioned installs were deprecated, it would not be
necessary to use Setuptools' style of script generation.  Instead you
could simply dereference the entry point, calling the underlying
function directly in the script.  This detail is probably more of a
distutils-sig question, and I don't have a strong opinion.

But I was thinking specifically of the egg activation buildout puts at
the top of scripts.

>> began development, probably things would have gone this way.  I think
>> it would make the environment more pleasant for buildout users.  Also
>
> * I don't think so, buildout is the only tool atm that permit to have really
> reproducible and isolated environments. Even, if you use the pip freezing
> machinery, it is not equivalent to buildout, Control!

I believe that to fully insulate buildout you need still virtualenv
--no-site-packages.  But I'm not arguing that virtualenv/pip makes
buildout obsolete, only that they have overlapping functionality, and
I think buildout would benefit from making use of that overlap.

> * Buildout can have single part to construct required eggs, at a specific
> version and let you control that. Pip will just search for this version, see
> that it's not available and fail. You have even recipes (like
> minitage.recipe.egg that permit to construct eggs with special version when you
> apply patches onto, thus, you can have the same egg in different flavors in the
> same eggs cache available for different projects. Those projects will just have
> to pin the right version to use, Control!.

In my own work I use multiple virtualenv environments for this use
case, to similar effect.  pip of course is not a generalized build
tool, but then minitage.recipe.egg is not the main egg installer
either.

> * Another thing is the "funny script generation", you have not one global
> site-packages for your project, but one global cache. But from this global
> cache, your scripts will only have available the eggs you declared, see Control!
> * Moreover buildout is not only a python packages manager, it's some of its
> recipes that permit to use it as. Buildout is just a great deployment tool that
> allow to script and manage your project in a "funny" and "flexible" way, Control!

Sure; I'm just advocating that buildout more explicitly use some of
the functionality of virtualenv/pip (which may require some more
features in those tools, but I'm open to that).  But specific
discussion of this would probably be more appropriate on
distutils-sig.

-- 
Ian Bicking  |  http://blog.ianbicking.org  |  http://topplabs.org/civichacker


More information about the Python-Dev mailing list