Okay, after a little investigation (about 30 seconds staring at setup.py), I see where the problem with dbm is. Setup.py has this code to deal with dbm: # The standard Unix dbm module: if platform not in ['cygwin']: if (self.compiler.find_library_file(lib_dirs, 'ndbm')): exts.append( Extension('dbm', ['dbmmodule.c'], libraries = ['ndbm'] ) ) elif self.compiler.find_library_file(lib_dirs, 'db1'): exts.append( Extension('dbm', ['dbmmodule.c'], libraries = ['db1'] ) ) else: exts.append( Extension('dbm', ['dbmmodule.c']) ) That second branch is just plain wrong. (I realize Neil added it in response to a bug report.) While it's true that Berkeley DB does (or did) provide a dbm API, the underlying file is a db1 hash file, which we all should realize by now is horribly broken, and if you've got a workable bsddb there's no sense in trying to trick programmers into thinking they also have real dbm files. I suggest we discard the elif branch. Any argument? Skip