Personal tools
You are here: Home Blog Buildout love, worries and work: 3.0.0a1 release

Buildout love, worries and work: 3.0.0a1 release

Buildout has some unique capabilities. But it relied on deprecated setuptools easy_install, work was needed. There is a new 3.0 alpha release.


I love zc.buildout and I deeply rely on it for my daily work.

It provides features that I think are unique and cannot be found in the pip ecosystem. As I am no expert of that ecosystem, I might be proven wrong.

Among others, I'd like to point two features that I really think are critical for my work.

extends through HTTP, is a tool that enables best-practice/community knowledge sharing on various aspects like version pinning (aka KGS – Known Good Set), or setup of production, development or CI environments.

Buildout installs packages as eggs in separate directories which names are built on the package name and version. This makes very explicit which versions are used by a script. Further, when installing scripts, buildout restricts the Python path to only the dependencies and avoids the need of one virtual environment per script.


In this context, to observe the decay of the tool made me more and more worried .

Since almost a year, the test suite had become harder to run: it would break on Travis for an unknown reason where numerous attempts did not discover a fix.

With the recent deprecation of setuptools.easy_install, the doctest suite was totally broken.

Using buildout under 2.7 had become more and more painful as it would install Python3-only releases of packages.


The covid-19 lockdown was a perfect opportunity to scratch that itch. Took quite some work but I am happy to announce a new 3.0.0a1 release that relies on pip install rather than setuptools.easy_install. No deprecation warnings under Python 3. Yay !

This is a pretty deep change, reason why I am releasing an alpha version. I am looking forward to getting feedback from other devs that will try it. I want to already thank @icemac, @ale-rt and @jamadden which have tested or the PR or the very fresh release.

I have also integrated support for Requires-Python. This ensures that buildout only installs proper releases of packages that provides that metadata. Among others, zc.buildout under Python 2.7 will not try to install recent setuptools versions that do not support 2.7 anymore.

There is also a tentative fix for the forever loop that happened  when pinning/upgrading zc.buildout via buildout.cfg.

I want to thank @mgedmin for the detailed reviews he made while the PR was baking. His comments were very insightful and helped a lot to improve the PR.

Thanks to his gentle nudge, I am proud to announce that besides the new release, not only is CI fixed on Travis but there are new Github actions that run the test suite in MacOS and Windows machines, besides other jobs in CentOS or debian containers.

Long life to buildout !

Document Actions