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

kiorky kiorky at cryptelium.net
Fri Oct 9 10:54:23 CEST 2009

Ian Bicking a écrit :
> I'm coming in late and breaking threading, but wanted to reply to
> Tarek's original email:

> This is verifiable, stable, and to varying degrees concrete
> (virtualenv being more concrete than buildout, which tends more
> towards the declarative).

Is that a friday troll ? declarative over control ?

> What virtualenv does could certainly be in the Python interpreter (and
> much more compact as a result, I am sure).  PYTHONHOME does it to a
> degree, though binding a script to a environment through the
> interpreter listed in #! is more stable than the implicit environment
> of PYTHONHOME.  workingenv used an environmental variable (PYTHONPATH,
> before PYTHONHOME existed) and it caused problems.  Also virtualenv
> offers more system isolation.
> 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?

> 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!
* 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!.
* 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!

> I wish it used pip instead of its own installation procedure (based on
> easy_install).  I don't think the philosophical differences are that
> great, and that it's more a matter of history -- because the code is

And retro-compatibility.

> written, there's not much incentive for buildout to remove that code
> and rely on other libraries (virtualenv and pip).

* Virtualenv is not really needed as buildout uses "eggs caches" and do the
isolation from there. Scripts generate the adequate sys.path relying on the
application requirements (which, once more, you are in total control). I prefer
throught to use a virtualenv for each project (or a bunch of projects), and to
bootstrap my buildouts from there. For me, they are complementary to achieve
your deployment and isolation needs.

> --
> Ian Bicking  |  http://blog.ianbicking.org  |  http://topplabs.org/civichacker
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org
> http://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe: http://mail.python.org/mailman/options/python-dev/kiorky%40cryptelium.net

GPG Key FingerPrint: 0x1A1194B7681112AF

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 261 bytes
Desc: OpenPGP digital signature
URL: <http://mail.python.org/pipermail/python-dev/attachments/20091009/4d1df0b4/attachment.pgp>

More information about the Python-Dev mailing list