Strange error on buildout after upgrade to 5.1rc1 - DistributionNotFound

Hello all. We recently upgraded our Plone instance from 5.0.7 to 5.1rc1, the update went well, but we're having an issue trying to run the buildout post-upgrade.

When we run the buildout using the latest versions.cfg file from 5.1rc1, we get the following:

While:
  Installing.
  Getting section zeoserver.
  Initializing section zeoserver.
  Loading zc.buildout recipe entry plone.recipe.zeoserver:default.

An internal error occurred due to a bug in either zc.buildout or in a
recipe being used:
Traceback (most recent call last):
  File "/opt/bitnami/python/lib/python2.7/site-packages/zc.buildout-2.5.3-py2.7.egg/zc/buildout/buildout.py", line 1995, in main
    getattr(buildout, command)(args)
  File "/opt/bitnami/python/lib/python2.7/site-packages/zc.buildout-2.5.3-py2.7.egg/zc/buildout/buildout.py", line 550, in install
    [self[part]['recipe'] for part in install_parts]
  File "/opt/bitnami/python/lib/python2.7/site-packages/zc.buildout-2.5.3-py2.7.egg/zc/buildout/buildout.py", line 1135, in __getitem__
    options._initialize()
  File "/opt/bitnami/python/lib/python2.7/site-packages/zc.buildout-2.5.3-py2.7.egg/zc/buildout/buildout.py", line 1239, in _initialize
    self.initialize()
  File "/opt/bitnami/python/lib/python2.7/site-packages/zc.buildout-2.5.3-py2.7.egg/zc/buildout/buildout.py", line 1245, in initialize
    recipe_class = _install_and_load(reqs, 'zc.buildout', entry, buildout)
  File "/opt/bitnami/python/lib/python2.7/site-packages/zc.buildout-2.5.3-py2.7.egg/zc/buildout/buildout.py", line 1204, in _install_and_load
    req.project_name, group, entry)
  File "/opt/bitnami/python/lib/python2.7/site-packages/setuptools-20.9.0-py2.7.egg/pkg_resources/__init__.py", line 542, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/opt/bitnami/python/lib/python2.7/site-packages/setuptools-20.9.0-py2.7.egg/pkg_resources/__init__.py", line 2569, in load_entry_point
    return ep.load()
  File "/opt/bitnami/python/lib/python2.7/site-packages/setuptools-20.9.0-py2.7.egg/pkg_resources/__init__.py", line 2228, in load
    self.require(*args, **kwargs)
  File "/opt/bitnami/python/lib/python2.7/site-packages/setuptools-20.9.0-py2.7.egg/pkg_resources/__init__.py", line 2245, in require
    items = working_set.resolve(reqs, env, installer)
  File "/opt/bitnami/python/lib/python2.7/site-packages/setuptools-20.9.0-py2.7.egg/pkg_resources/__init__.py", line 829, in resolve
    raise DistributionNotFound(req, requirers)
DistributionNotFound: The 'zope.event' distribution was not found and is required by ZODB3

We've attempted to troubleshoot this for a lot of hours and unfortunately have not had any luck. It seems that the issue is unrelated to any eggs, since even if we comment out all the eggs, we still get the error message. We've also made sure there are no issues with permissions.

The following is the content of our buildout.cfg, in case that helps shed some light on what's going on:

############################################
#
# Buildout Configuration File for Plone
# -------------------------------------
#
# ALWAYS back up all Plone/Zope data and components
# before changing configuration.
#
# Running "bin/buildout" will update your installation,
# installing missing components as necessary.
#
# This will update the add-on products you've added in the eggs= lines.
# This will not, however, upgrade Plone itself (or anything else you've
# pinned with a version specification). To upgrade Plone itself, see the
# comments in "Plone Component Versions".
#
# Tutorial instructions for using zc.buildout for
# configuration management are available at:
# http://plone.org/documentation/tutorial/buildout
# Full details at http://pypi.python.org/pypi/zc.buildout
#
############################################
[instance]
recipe = plone.recipe.zope2instance



[buildout]
############################################
# Plone Component Versions
# ------------------------
# This version of the Unified Installer has the components of Plone 5
# preloaded so that it can install without an Internet connection.
# If you want to update, uncomment the "http://..." line below,
# edit it to point to the current version URL, comment out the
# "versions.cfg" line and run "bin/buildout" while attached to the
# Internet. Generally, you only want to do that as part of a planned migration.
# Note that if you are updating components, you should also check the versions
# section at the end of this file, since recipes or components other than
# those of Zope and Plone may need updating at the same time.
#


debug-mode = on
extends =
    base.cfg
#    versions.cfg
#    sources.cfg
    http://dist.plone.org/release/5.1-latest/versions.cfg


# If you change your Plone version, you'll also need to update
# the repository link below.
find-links +=
    http://dist.plone.org/release/5.1-latest

# If you try to start Zope as root, it will change user id to run as
# the effective user specified here. This user id must own the var directory
# of your buildout.
effective-user = plone
# This user will own the rest of the installation, and should be used to
# run buildout.
buildout-user = root
# A flag to tell the Unified Installer whether or not to document sudo use.
need-sudo = no

############################################
# Eggs
# ----
# Add an indented line to the eggs section for any Python
# eggs or packages you wish to include in your Plone instance.
#
# Note that versions may be specified here or in the [versions]
# section below. You should always specify versions that you know
# are compatible with the Plone release and at an acceptable
# development level.
#
# If you update to a later version of Plone, remove the hotfix.
#
eggs =
#    zope.event
    Plone
    Pillow
#    Products.PloneHotfix20160830
#    Products.PloneHotfix20161129
    collective.prettydate
    collective.blog
    plonetheme.booster
#    Products.FacultyStaffDirectory
    Products.PloneFormGen
    collective.pdfjs
   collective.embedly
    Products.MasterSelectWidget
    collective.weather
    collective.documentviewer
    webcouturier.dropdownmenu
    collective.contentrules.mailtogroup
    Products.ContentWellPortlets
    Products.PloneSurvey
    collective.searchandreplace
    collective.portlet.twitter
    cs.portlet.calendar
    collective.roster
    collective.workspace
############################################
# ZCML Slugs
# ----------
# Some eggs need ZCML slugs to tell Zope to
# use them. This is increasingly rare.
zcml =
#    plone.reload

############################################
# Development Eggs
# ----------------
# You can use paster to create "development eggs" to
# develop new products/themes. Put these in the src/
# directory.
# You will also need to add the egg names in the
# eggs section above, and may also need to add them
# to the zcml section.
#
# Provide the *paths* to the eggs you are developing here:
develop =
#    src/my.package

############################################
# var Directory
# -------------
# Sets the target directory for the "var" components of the install such as
# database and log files.
#
var-dir=${buildout:directory}/var

############################################
# Backup Directory
# ----------------
# Sets the target directory for the bin/backup and bin/snapshotbackup
# commands. Default is inside this project's var directory, but ideally
# this should be on a separate volume or backup server.
#
backups-dir=${buildout:var-dir}

############################################
# Initial User
# ------------
# This is the user id and password that will be used to create the initial
# user id that will allow you to log in and create a Plone site. This only
# sets the initial password; it will not allow you to change an already
# existing password. If you change the admin password via the web interface,
# the one below will no longer be valid.
# If you find yourself locked out of your Zope/Python installation, you may
# add an emergency user via "bin/plonectl adduser".
user=admin:bitnami

############################################
# Debug Options
# -------------
# Start Zope/Plone instances in "fg" mode to turn on debug mode;
# this will dramatically slow Plone.
#
# Add-on developers should turn deprecation warnings on
deprecation-warnings = off
# change verbose-security to "on" for useful security errors while developing
verbose-security = off
debug-mode = on

############################################
# Parts Specification
#--------------------
# Specifies the components that should be included in the buildout.
# Most are defined in the base.cfg extension; you may add your
# own if you need them at the end of this file.
parts =
    zeoserver
    client1
    backup
    zopepy
    unifiedinstaller

############################################
# Major Parts
# ----------------------
# These common parts make use of sane base settings from
# base.cfg. To customize a part, just add whatever options
# you need. Read base.cfg for common settings.

[zeoserver]
<= zeoserver_base
recipe = plone.recipe.zeoserver
zeo-address = 127.0.0.1:8100

[client1]
<= client_base
recipe = plone.recipe.zope2instance
zeo-address = ${zeoserver:zeo-address}
http-address = 8081

############################################
# Versions Specification
# ----------------------
# Version information supplied here will "pin" Python packages to a particular
# version number, even when you use the "newest" flag running buildout.
# Specifying versions for all packages is a good idea and can prevent
# accidental changes when you add new packages to your buildout.
# Note that versions specified here will override those specified earlier
# in the configuration, including those from the Plone and Zope version
# config files.
#
[versions]
# Use the setuptools and zc.buildout versions that are
# available in our Python environment.
setuptools = 
zc.buildout = 


Pillow = 

Products.DocFinderTab = 
Products.PloneHotfix20160830 = 
Products.PloneHotfix20161129 = 
bobtemplates.plone = 
buildout.sanitycheck = 
collective.checkdocs = 
collective.recipe.backup = 
mr.bob = 
pkginfo = 
plone.recipe.unifiedinstaller = 
requests-toolbelt = 
zest.pocompile = 
plone.recipe.zope2instance = 

# Required by:
# Jinja2==2.8
MarkupSafe = 0.23

# Required by:
# clint==0.5.1
args = 0.1.0

# Required by:
# twine==1.8.1
clint = 0.5.1

# Required by:
# zest.releaser==6.8
colorama = 0.3.7

We are fairly lost here so any help would be GREATLY appreciated! Thank you guys so much.

1 Like

Hi Rob,

There was/is an issue with PyPI now supporting only httpS, not http.
You can work around this by setting the following, or upgrading your zc.buildout to at least 2.9.5.

[buildout]
index = https://pypi.python.org/simple
2 Likes

Hi @jaroel, thank you kindly for the quick response. :slightly_smiling_face: We tried adding the https as you suggested, but unfortunately it didn't seem to have any effect.

As far as the version of buildout, that is a good thing you pointed out, it appears we're trying to use an updated version.

I know this probably seems like an elementary question, but how would you upgrade buildout? We have the egg folder for buildout 2.10.0 in our site-packages folder, and we tried switching the version of buildout in the actual bin/buildout file from 2.5.3 to 2.10.0, and we ran buildout, and it came back with the same error, with the only difference being the version of buildout was different (see below):

While:
  Installing.
  Getting section zeoserver.
  Initializing section zeoserver.
  Loading zc.buildout recipe entry plone.recipe.zeoserver:default.

An internal error occurred due to a bug in either zc.buildout or in a
recipe being used:
Traceback (most recent call last):
  File "/opt/bitnami/python/lib/python2.7/site-packages/zc.buildout-2.10.0-py2.7.egg/zc/buildout/buildout.py", line 2123, in main
    getattr(buildout, command)(args)
  File "/opt/bitnami/python/lib/python2.7/site-packages/zc.buildout-2.10.0-py2.7.egg/zc/buildout/buildout.py", line 680, in install
    [self[part]['recipe'] for part in install_parts]
  File "/opt/bitnami/python/lib/python2.7/site-packages/zc.buildout-2.10.0-py2.7.egg/zc/buildout/buildout.py", line 1274, in __getitem__
    options._initialize()
  File "/opt/bitnami/python/lib/python2.7/site-packages/zc.buildout-2.10.0-py2.7.egg/zc/buildout/buildout.py", line 1382, in _initialize
    self.initialize()
  File "/opt/bitnami/python/lib/python2.7/site-packages/zc.buildout-2.10.0-py2.7.egg/zc/buildout/buildout.py", line 1388, in initialize
    recipe_class = _install_and_load(reqs, 'zc.buildout', entry, buildout)
  File "/opt/bitnami/python/lib/python2.7/site-packages/zc.buildout-2.10.0-py2.7.egg/zc/buildout/buildout.py", line 1343, in _install_and_load
    req.project_name, group, entry)
  File "/opt/bitnami/python/lib/python2.7/site-packages/setuptools-20.9.0-py2.7.egg/pkg_resources/__init__.py", line 542, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/opt/bitnami/python/lib/python2.7/site-packages/setuptools-20.9.0-py2.7.egg/pkg_resources/__init__.py", line 2569, in load_entry_point
    return ep.load()
  File "/opt/bitnami/python/lib/python2.7/site-packages/setuptools-20.9.0-py2.7.egg/pkg_resources/__init__.py", line 2228, in load
    self.require(*args, **kwargs)
  File "/opt/bitnami/python/lib/python2.7/site-packages/setuptools-20.9.0-py2.7.egg/pkg_resources/__init__.py", line 2245, in require
    items = working_set.resolve(reqs, env, installer)
  File "/opt/bitnami/python/lib/python2.7/site-packages/setuptools-20.9.0-py2.7.egg/pkg_resources/__init__.py", line 829, in resolve
    raise DistributionNotFound(req, requirers)
DistributionNotFound: The 'zope.event' distribution was not found and is required by ZODB3

Is this actually the preferred way to update buildout? Perhaps there is a better way? Thanks again so much for attempting to assist here. :pray:

@rockmancuso Maybe there are some pointers in Buildout not working / Couldn't find index page for / Couldn't find a distribution / Disabling non HTTPS access to APIs on PyPI that work for you?

1 Like

We eventually moved to a different server because we couldn't figure this out, but months later, we ran into the same issue, and after about the 50th time of viewing that topic, one of the posts in it fixed our issue!

Running buildout using the command in this post enabled us to get past this issue and be able to run buildout without any errors.

Thanks for recommending it, @jaroel!