Search code examples
pythonhomebrewbuildout

zc.buildout requirements error when 1.7.0 is installed globally


I'm trying to work around the distribute/setuptools re-merge by updating my buildout-based project to use the latest bootstrap.py script. When I run it from a clean checkout of a project I get the following error because I have zc.buildout 1.7.0 installed globally. I thought the purpose of bootstrap.py was to install the required buildout, etc?

What am I missing here?

$ python --version
Python 2.7.5
$ python bootstrap.py
Traceback (most recent call last):
  File "bootstrap.py", line 159, in <module>
    ws.require(requirement)
  File "build/bdist.macosx-10.8-x86_64/egg/pkg_resources.py", line 673, in require
  File "build/bdist.macosx-10.8-x86_64/egg/pkg_resources.py", line 580, in resolve
pkg_resources.VersionConflict: (zc.buildout 1.7.0 (/usr/local/lib/python2.7/site-packages/zc.buildout-1.7.0-py2.7.egg), Requirement.parse('zc.buildout==2.2.1'))

Here is some relevant parts of my buildout.cfg if it matters

[buildout]
extensions = mr.developer
include-site-packages = false
show-picked-versions = true
parts =
    python
    gae_sdk
    gae_tools
    app_lib
    nosetests

[versions]
zc.buildout=1.7.1
zc.recipe.egg=1.3.2
setuptools=1.3.2

Solution

  • You'll need to tell bootstrap what version to pick, explicitly:

    python bootstrap.py -v 1.7.1
    

    to match the version named in your buildout.cfg. Bootstrap does not look in buildout.cfg to honour version pins; you'd have to re-implement a large chunk of buildout itself to be able to parse the full configuration format (including includes).