Several people have seen a hard-to-reproduce recursion error when running buildout in combination with distribute. You’d get 200 lines of “distribute”.
Good news: the problem has been identified. And I’ve fixed it and the branch is now merged to zc.buildout’s trunk, so it’ll be in the next release.
Temporary fix: the problem surfaces when the currently-used distribute is older than the version that’s available on pypi. So update your (probably system-wide?) distribute to the latest version and the problem also ought to go away. You might need to re-run your bootstrap.
Buildout’s easy_install.py module detects the location of setuptools and buildout at import time and uses those paths when creating scripts. Setuptools’s path is also used when calling easy_install to install .tgz files.
Problem: the install method that calls easy_install detects the setuptools location all over again at runtime. And there’s a recursion in there. The method that searches for the available setuptools detects that there’s a new version available and tries to install it. And searches for the setuptools location. And tries to install it. Repeat.
I fixed it by simply using the pre-detected setuptools location when calling easy_install.
Note that setuptools did not have this recursion problem solely because it was
packaged as an .egg
, which does not have to go through the easy_install
step! So distribute’s (necessary) packaging as a tgz exposed this bug.
My name is Reinout van Rees and I program in Python, I live in the Netherlands, I cycle recumbent bikes and I have a model railway.
Most of my website content is in my weblog. You can keep up to date by subscribing to the automatic feeds (for instance with Google reader):