AMK's Home Zodb

Installing the ZODB

The ZODB forms part of Zope, but it's difficult and somewhat painful to disentangle the bits from Zope that you need to write Python programs that use only the ZODB. Accordingly I've gone ahead and packaged only the packages required for the ZODB, so you can install them and start programming.

These packages are quite young and are still experimental; don't be surprised if the installation process runs into problems. Please inform me of any difficulties you encounter.

Requirements

You'll need Python, of course; version 1.5.2 certainly works, and the ZODB code seems to compile using the Python 2.0 CVS tree.

The code is packaged using the new distribution tools, so first you'll have to get the latest Distutils release from the Distutils SIG page and install it. This is simply a matter of untarring or unzipping the release package, and then running python setup.py install.

Be sure you have the latest version of Distutils; if you encounter problems compiling ZODB/TimeStamp.c or your compiler reports an error like "Can't create build/temp.linux2/ExtensionClass.o: No such file or directory", you need an updated version. Old versions of Distutils have two bugs which affect the setup scripts. First, for a long time the define_macros keyword in setup.py files didn't work due to a Distutils bug, so I hacked TimeStamp.c in earlier releases. The Distutils have since been fixed, and the hack became unnecessary, so I removed it. Second, the code that creates directories tries to be smart and caches them to save time by not trying to create a directory twice, but this code was broken in old versions of Distutils.

Installing the Packages

Download the ZODB tarball containing all the packages for both ZODB and ZEO. I no longer distribute the packages separately, since all of the packages together are only 285K, and making individual packages took a bit of effort.

Run the standard command for installing software using the Distutils: python setup.py install. If you encounter any problems, please let me know.