Speaker
Mr
James Fulton
(Zope Corporation)
Description
Applications and application-development environments are often built
from parts, such as Python packages, databases, libraries, and
configuration. The assembly process can be quite involved. It is
best to use tools to automate the assembly process.
Setuptools is a project that provides a packaging system for Python.
It extends Distutils with the ability to define package dependencies
and automated package installation. It provides automated
platform-appropriate script generation. It allows multiple versions
of packages to be installed, such that different applications can use
different package versions as needed.
Setuptools is targeted toward installing packages into a Python
installation. It is not well suited to installing packages into a
development environment. Setuptools assembles applications at run
time, leading to undesirable non-determinism when new packages are
installed.
We have developed an application and framework, zc.buildout, that
provides automated application assembly leveraging setuptools. It can
be used to assemble any application, but it is especially well suited
to and is designed for assembling Python applications. Applications
are defined with configuration files. Configuration files specify a
collection of parts, along with their configuration data, making up
the application. Parts are implemented by recipes. Recipes are
defined as setuptools packages. Recipes are provided for installing
Python packages and scripts leveraging setuptools' automated
installation facilities, providing an improved mechanism for
leveraging setuptools in development environments and other situations
where installing into a Python installation isn't appropriate. The
buildout system provides install-time, rather than run-time
application assembly, providing greater predictability.
Author
Mr
James Fulton
(Zope Corporation)