5.1.5 buildout chokes on "'extras_require' must be a dictionary" installing BTrees-4.4.1

Hello!
I'm hoping to get the most recent Mosaic release running on my site, perhaps it will finally solve the issue with the "Save" button not working... (I did find this afternoon that restarting the Chrome Browser allowed me to save the page. What???)

I can not get a handle on what's going on here.... many thanks if you can point me in the right direction!

that is: 5.1.5 buildout chokes on "'extras_require' must be a dictionary", installing BTrees-4.4.1

(apologies, I've been struggling with variations of this same Mosaic issue for two years, but as a very part-time thing... it's not my main job :wink:

There were no other substantial changes from the previous buildout, and even so, what's up with BTrees??

I've been googling all afternoon, and can't find anything related.
There's no problem running the buildout on my dev server with the same basic setup.

BTW, I also tried running an upgrade to 5.2-rc1 but that buildout stumbled on installing ZopeDB 5.5.1

Transcript first, then the current buildout.cfg

 ./bin/buildout -v
Installing 'buildout.sanitycheck'.
We have the distribution that satisfies 'buildout.sanitycheck==1.0.2'.
Installing 'plone.recipe.zeoserver'.
We have the distribution that satisfies 'plone.recipe.zeoserver==2.0.0'.
Getting required 'ZopeUndo==4.3'
We have the distribution that satisfies 'ZopeUndo==4.3'.
Getting required 'zope.mkzeoinstance==4.1'
We have the distribution that satisfies 'zope.mkzeoinstance==4.1'.
Getting required 'ZODB==5.3.0'
We have the distribution that satisfies 'ZODB==5.3.0'.
Getting required 'zc.recipe.egg==2.0.5'
We have the distribution that satisfies 'zc.recipe.egg==2.0.5'.
Getting required 'ZEO==5.1.1'
We have the distribution that satisfies 'ZEO==5.1.1'.
Getting required 'zdaemon==4.2.0'
We have the distribution that satisfies 'zdaemon==4.2.0'.
Getting required 'zodbpickle==0.7.0'
We have the distribution that satisfies 'zodbpickle==0.7.0'.
Getting required 'zope.interface==4.4.3'
We have the distribution that satisfies 'zope.interface==4.4.3'.
Getting required 'zc.lockfile==1.2.1'
We have the distribution that satisfies 'zc.lockfile==1.2.1'.
Getting required 'six==1.10.0'
We have the distribution that satisfies 'six==1.10.0'.
Getting required 'transaction==2.1.2'
We have the distribution that satisfies 'transaction==2.1.2'.
Getting required 'ZConfig==3.1.0'
We have the distribution that satisfies 'ZConfig==3.1.0'.
Getting required 'BTrees==4.4.1'
We have no distributions for BTrees that satisfies 'BTrees==4.4.1'.
Getting distribution for 'BTrees==4.4.1'.
Running easy_install:
"/opt/plone/zeocluster/bin/python2.7" "-c" "import sys; sys.path[0:0] = ['/opt/plone/zeocluster/lib/python2.7/site-packages']; from setuptools.command.easy_install import main; main()" "-mZUNxd" "/opt/plone/buildout-cache/eggs/tmpwN9vqu" "-q" "/opt/plone/buildout-cache/downloads/dist/BTrees-4.4.1.tar.gz"
path=/opt/plone/zeocluster/lib/python2.7/site-packages

/usr/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'cffi_modules'
  warnings.warn(msg)
error: Setup script exited with error in persistent setup command: 'extras_require' must be a dictionary whose values are strings or lists of strings containing valid project/version requirement specifiers.
An error occurred when trying to install BTrees 4.4.1. Look above this message for any errors that were output by easy_install.
While:
  Installing.
  Getting section zeoserver.
  Initializing section zeoserver.
  Installing recipe plone.recipe.zeoserver.
  Getting distribution for 'BTrees==4.4.1'.
Error: Couldn't install: BTrees 4.4.1

--
buildout.cfg

#emptiness live 
############################################
#
# 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
#
############################################

[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.
#
extends =
    base.cfg
#    versions.cfg
    http://dist.plone.org/release/5.1.5/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.5/
    
index =https://pypi.python.org/simple/

# 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_daemon
# This user will own the rest of the installation, and should be used to
# run buildout.
buildout-user = plone_buildout
# A flag to tell the Unified Installer whether or not to document sudo use.
need-sudo = yes

############################################
# 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 =
    Plone
    Pillow
    Products.RedirectionTool
    Products.PloneFormGen
    plone.app.mosaic
    plone.app.imagecropping
    collective.recaptcha
    medialog.googlefonts
   #plone.formwidget.recaptcha
    collective.plonetruegallery
    collective.ptg.unitegallery
    collective.ptg.carousel
    collective.ptg.highslide
    collective.ptg.contactsheet
    collective.ptg.presentation
    collective.ptg.fancybox
    collective.ptg.supersized    

    plonetheme.booster
    plonetheme.business_casual

############################################
# ZCML Slugs
# ----------
# Some eggs need ZCML slugs to tell Zope to
# use them. This is increasingly rare.
zcml =
#    collective.recaptcha

############################################
# 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:12349876

############################################
# 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

############################################
# 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
    precompiler
    setpermissions

############################################
# 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 = 8080

############################################
# 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 =


# prevents zope startup crash
plone.protect = 3.1.2

# mosaic pins
# if a package was released, update here!
# also, change the versions in buildout.coredev (5.1/5.2) version.cfg
# https://pypi.org/project/plone.app.mosaic/
# as of 18 dec 2018
#plone.app.blocks        = 4.2.0
#plone.app.drafts        = 1.1.2
#plone.app.mosaic        = 2.1.1
#plone.app.standardtiles = 2.3.1
#plone.app.tiles         = 3.1.0
#plone.tiles             = 2.1
#plone.jsonserializer = 0.9.6

## as of 06 mar 2019
# if a package was released, update here!
# also, change the versions in buildout.coredev/5.2 version.cfg
plone.app.blocks        = 4.3.1
plone.app.drafts        = 1.1.3
plone.app.mosaic        = 2.2.1
plone.app.standardtiles = 2.3.1
plone.app.tiles         = 3.1.1
plone.tiles             = 2.2.0
plone.jsonserializer    = 0.9.7
plone.app.contenttypes  = 2.0.1
plone.behavior          = 1.3.0
plone.subrequest        = 1.9.0
##
collective.recaptcha = 2.1.0


Products.DocFinderTab = 1.0.5
bobtemplates.plone = 1.0.3
buildout.sanitycheck = 1.0.2
collective.checkdocs = 0.2
collective.recipe.backup = 3.0.0
mr.bob = 0.1.2
pkginfo = 1.3.2
plone.recipe.unifiedinstaller = 4.3.2
requests-toolbelt = 0.6.2
twine = 1.7.2
zest.pocompile = 1.4
zest.releaser = 6.6.4

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

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

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

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

Lots of addons! I would try to start over with a fresh virtualenv and a vanilla plone (comment out all additional eggs). Then add Mosaic, buildout, startup, create Plone site. If all works remove Plone Site, uncomment next (set of) Addons(s), proceed as before, then next and so on. This helps to get down to the real problem.

Thanks Jens!
I'll see what I can discover...

This is likely to an outdated setuptools version ... check https://github.com/plone/buildout.coredev/blob/5.1/requirements.txt for the zc.buildout and setuptools requirements and pip install -r requirements.txt them before running your buildout ... and make sure you sync those versions in the [versions] part of your configuration ...

1 Like

PS: and check the Installation Note for Plone 5.1 here https://github.com/plone/plone.app.mosaic/ for the newest mosaic versions on Plone 5.1

1 Like

I am the author of medialog.googlefonts and I dont think it will work on Plone 5.
I have not used it for many years.
Now, it is so easy to just add the html that you get from google to your themes index html file, so I dont think the add-on is relevant any more.

Also: it could be an idea to use collective.easyform instead of formgen.

Thanks Peter
I was wondering yesterday if perhaps running easy_install update might
help.

...
{update}

Hmm. Not yet.
Even after updating setuptools (was already at 40.8.0 ) and zcbuildout now at 2.3.1
Buildout still chokes on BTree.

Best regards.
PF

Thanks for the tip on the themes index.html , Espen.
That was exactly what I was digging for yesterday!
Hopefully, an update for setuptools will let me run this buildout, sans medialog.googlefonts!

Well, now...
@petschki you were absolutely right.
And thanks also @jensens and @espenmn
You guys are the real Plone guardian angels!
I've been crashing through the underbrush here for well over a decade, and inevitably, one or another of you, good fellows, will lend me a hand to come back up to the true path :wink:

Of course, when I ran pip and updated setuptools, it was not my plone's ./bin/pip but the system /bin.
Once I used the right path...
Presto!

Beverage of choice to you all next time we meet!
I wish I could get to one of those Castle sprints some day.
I do have useful knowledge, of some sort! (typographic, mostly!)
And espresso :wink:

More questions later, but for now... let's see how Zope likes this new buildout.
Many thanks!
Peter

1 Like

Plone Foundation Code of Conduct