Welcome, guest | Sign In | My Account | Store | Cart

Notice! PyPM is being replaced with the ActiveState Platform, which enhances PyPM’s build and deploy capabilities. Create your free Platform account to download ActivePython or customize Python with the packages you require and get automatic updates.

pypm install zodb

How to install ZODB

  1. Download and install ActivePython
  2. Open Command Prompt
  3. Type pypm install zodb
 Python 2.7Python 3.2Python 3.3
Windows (32-bit)
4.0.0Never BuiltWhy not?
4.0.0b3 Available View build log
Windows (64-bit)
4.0.0Never BuiltWhy not?
4.0.0b3 Available View build log
Mac OS X (10.5+)
4.0.0Never BuiltWhy not?
4.0.0b3 Available View build log
Linux (32-bit)
4.0.0Never BuiltWhy not?
4.0.0b3 Available View build log
Linux (64-bit)
4.0.0 Failed View build log
4.0.0b3 Available View build log
4.0.0 Available View build log
4.0.0b3 Available View build log
ZPL 2.1
Lastest release
version 4.0.0 on Sep 20th, 2013

The Zope Object Database provides an object-oriented database for Python that provides a high-degree of transparency. Applications can take advantage of object database features with few, if any, changes to application logic. ZODB includes features such as a plugable storage interface, rich transaction support, and undo.



The ZODB package provides a set of tools for using the Zope Object Database (ZODB).

Our primary development platforms are Linux and Mac OS X. The test suite should pass without error on these platforms and, hopefully, Windows, although it can take a long time on Windows -- longer if you use ZoneAlarm.


ZODB 4.0 requires Python 2.6, 2.7, 3.3.


You must have Python installed. If you're using a system Python install, make sure development support is installed too.

You also need the transaction, BTrees, persistent, zc.lockfile, ZConfig, zdaemon, zope.event, zope.interface, zope.proxy and zope.testing packages. If you don't have them and you can connect to the Python Package Index, then these will be installed for you if you don't have them.


ZODB is released as a distutils package. The easiest ways to build and install it are to use easy_install, or zc.buildout.

To install by hand, first install the dependencies, ZConfig, zdaemon, zope.interface, zope.proxy and zope.testing. These can be found in the Python Package Index.

To run the tests, use the test setup command:

python setup.py test

It will download dependencies if needed. If this happens, ou may get an import error when the test command gets to looking for tests. Try running the test command a second time and you should see the tests run.

python setup.py test

To install, use the install command:

python setup.py install
Testing for Developers

The ZODB checkouts are buildouts. When working from a ZODB checkout, first run the bootstrap.py script to initialize the buildout:

% python bootstrap.py

and then use the buildout script to build ZODB and gather the dependencies:

% bin/buildout

This creates a test script:

% bin/test -v

This command will run all the tests, printing a single dot for each test. When it finishes, it will print a test summary. The exact number of tests can vary depending on platform and available third-party libraries.:

Ran 1182 tests in 241.269s


The test script has many more options. Use the -h or --help options to see a file list of options. The default test suite omits several tests that depend on third-party software or that take a long time to run. To run all the available tests use the --all option. Running all the tests takes much longer.:

Ran 1561 tests in 1461.557s

Maintenance scripts

Several scripts are provided with the ZODB and can help for analyzing, debugging, checking for consistency, summarizing content, reporting space used by objects, doing backups, artificial load testing, etc. Look at the ZODB/script directory for more informations.


ZODB is distributed under the Zope Public License, an OSI-approved open source license. Please see the LICENSE.txt file for terms and conditions.

More information

See http://zodb.org/

There is a Mailman mailing list in place to discuss all issues related to ZODB. You can send questions to


or subscribe at


and view its archives at


Note that Zope Corp mailing lists have a subscriber-only posting policy.

Bugs and Patches

Bug reports and patches should be added to the Launchpad:


Change History

4.0.0 (2013-08-18)

Finally released.

4.0.0b3 (2013-06-11)
  • Switch to using non-backward-compatible pickles (protocol 3, without storing bytes as strings) under Python 3. Updated the magic number for file-storage files under Python3 to indicate the incompatibility.
  • Fixed: A UnicodeDecodeError could happen for non-ASCII OIDs when using bushy blob layout.
4.0.0b2 (2013-05-14)
  • Extended the filename renormalizer used for blob doctests to support the filenames used by ZEO in non-shared mode.
  • Added url parameter to setup() (PyPI says it is required).
4.0.0b1 (2013-05-10)
  • Skipped non-unit tests in setup.py test. Use the buildout to run tests requiring "layer" support.
  • Included the filename in the exception message to support debugging in case loadBlob does not find the file.
  • Added support for Python 3.2 / 3.3.


ZODB 4.0.x is supported on Python 3.x for new applications only. Due to changes in the standard library's pickle support, the Python3 support does not provide forward- or backward-compatibility at the data level with Python2. A future version of ZODB may add such support.

Applications which need migrate data from Python2 to Python3 should plan to script this migration using separte databases, e.g. via a "dump-and-reload" approach, or by providing explicit fix-ups of the pickled values as transactions are copied between storages.

4.0.0a4 (2012-12-17)
  • Enforced usage of bytes for _p_serial of persistent objects (fixes compatibility with recent persistent releases).
4.0.0a3 (2012-12-01)
  • Fixed: An elaborate test for trvial logic corrupted module state in a

    way that made other tests fail spuriously.

4.0.0a2 (2012-11-13)
Bugs Fixed
  • An unneeded left-over setting in setup.py caused installation with pip to fail.
4.0.0a1 (2012-11-07)
New Features
  • The persistent and BTrees packages are now released as separate distributions, on which ZODB now depends.
  • ZODB no longer depends on zope.event. It now uses ZODB.event, which uses zope.event if it is installed. You can override ZODB.event.notify to provide your own event handling, although zope.event is recommended.
  • BTrees allowed object keys with insane comparison. (Comparison inherited from object, which compares based on in-process address.) Now BTrees raise TypeError if an attempt is made to save a key with comparison inherited from object. (This doesn't apply to old-style class instances.)
Bugs Fixed
  • Ensured that the export file and index file created by repozo share the same timestamp.


  • Pinned the transaction and manuel dependencies to Python 2.5- compatible versions when installing under Python 2.5.


Please see doc/HISTORY.txt for changelog entries for older versions of ZODB.

Subscribe to package updates

Last updated Sep 20th, 2013

Download Stats

Last month:1

What does the lock icon mean?

Builds marked with a lock icon are only available via PyPM to users with a current ActivePython Business Edition subscription.

Need custom builds or support?

ActivePython Enterprise Edition guarantees priority access to technical support, indemnification, expert consulting and quality-assured language builds.

Plan on re-distributing ActivePython?

Get re-distribution rights and eliminate legal risks with ActivePython OEM Edition.