Directory Structure of a Buildout

bootstrap.py

A script to be included with each project to help a new developer set up the tree for use with zc.buildout after checking out the project. It installs from the network the zc.buildout and setuptools packages into the project directory.

The actual URL for fetching the bootstrap.py file is:

buildout.cfg

Contains the default build specification for the entire project but others can be defined such as deployment.cfg and production.cfg. Specification files can include other specification files.

.installed.cfg

A hidden file that represents the current build state of the project. The zc.buildout software updates it as parts are installed or removed. The file is used by zc.buildout to compute the minimum set of changes to bring the project into sync with the buildout.cfg or other specification file.

parts/

Each part may create a holding directory underneath parts/ for the specific use of the part’s recipe. The part directory belongs to the recipe responsible for installing/uninstalling the part and is not intended for modification by the developer.

develop-eggs/

The directory holds a kind of symlink or shortcut link to the development directories elsewhere on the system of distributions being worked on. The content of the directory is manipulated by zc.buildout in response to “develop = DIRS” entries in the build specification file.

bin/

The directory receives executable scripts that zc.buildout creates from entrypoints defined within eggs and called out in the build specification.

bin/buildout

The command to invoked zc.buildout for bringing the state of the project directory into sync with a particular build specification.

bin/mypython

Just an example of a specific instance of a Python interpreter that encompasses a specific set of parts. The name is arbitrary and there can be any number of such custom interpreters.

eggs/

A cache directory of eggs pulled down from the net, ready for mapping onto the sys.path of specific parts, as given in the build specification. This directory may be shared across projects if configured to be in a common nnlocation, increasing the speed with which buildouts can be constructed.

downloads/

A cache directory of raw files pulled down from the net, such as compressed eggs, zipfiles, etc. After being downloaded into this directory, the contents are usually unpacked under a part name under the parts/. This directory may also be shared across projects, for greater efficiency.

lib/

Not strictly part of zc.buildout this directory appears when running within a sandbox created by virtualenv. It represents a standard Python lib/ hierarchy underwhich anything installed is outside the control of zc.buildout. It generally should be left alone.

build/

Not strictly part of zc.buildout either, it is a scratch directory used by distutils/setuptools in the process of constructing eggs.

dist/

Not strictly part of zc.buildout, this directory receives the final packed representations of distributions such as eggs ready for uploading or sharing.

Here’s a list of files and directories that you can ignore in your version control system software:

.installed.cfg
parts
develop-eggs
bin
eggs
downloads
lib
build
dist

Now you are familiar with installation and directory structure of a typical buildout project. Next step is to learn using buildout to develop a package .