Create a test recipe, which only prints itself >>> mkdir('recipes') >>> write('recipes', 'testrecipe.py', ... """ ... import logging, os, zc.buildout ... ... class TestRecipe: ... ... def __init__(self, buildout, name, options): ... self.name, self.options = name, options ... ... def install(self): ... logging.getLogger(self.name).info( ... 'This is the test recipe which is installing!') ... return '' ... ... def update(self): ... logging.getLogger(self.name).info( ... 'This is the test recipe which is updateting!') ... """) And create a dummy package to use it: >>> write('recipes', 'setup.py', ... """ ... from setuptools import setup ... ... setup( ... name = "recipes", ... entry_points = {'zc.buildout': ['testrecipe = testrecipe:TestRecipe']}, ... ) ... """) Now, this is a base buildout configuration file, which defines and uses by default one part: >>> write('base.cfg', """\ ... [buildout] ... develop = recipes ... parts = base-part ... [base-part] ... recipe = recipes:testrecipe ... """) And another buildout configuration file, which extends the base configuration file, and add to it another part: >>> write('buildout.cfg', """\ ... [buildout] ... extends = base.cfg ... parts += buildout-part ... [buildout-part] ... recipe = recipes:testrecipe ... """) If we run the buildout, then we should install first the part from the base configuration file, then the part from the other buildout configuration file: >>> print system(buildout) Develop: '/sample-buildout/recipes' Installing base-part. base-part: This is the test recipe which is installing! Installing buildout-part. buildout-part: This is the test recipe which is installing!