Похоже, что поставляемые Apple питоны не созданы ни с какими сторонними библиотеками баз данных, поэтому anydbm
приводит к использованию переносимой реализации dumbdbm
по умолчанию, в которой отсутствует метод iteritems
.
$ /usr/bin/python2.5
Python 2.5.4 (r254:67916, Feb 11 2010, 00:50:55)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import anydbm
>>> db = anydbm.open('cache', 'c')
>>> dir(db)
['close', 'get', 'has_key', 'keys', 'setdefault']
Python.org OS X Питоны, с другой стороны, построены с реальным интерфейсом dbm:
$ /usr/local/bin/python2.5
Python 2.5.4 (r254:67917, Dec 23 2008, 14:57:27)
[GCC 4.0.1 (Apple Computer, Inc. build 5363)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import anydbm
>>> db = anydbm.open('cache2', 'c')
>>> dir(db)
['__cmp__', '__contains__', '__del__', '__delitem__', '__doc__', '__getitem__', '__init__', '__iter__', '__len__', '__module__', '__repr__', '__setitem__', '_checkCursor', '_checkOpen', '_closeCursors', '_cursor_refs', '_gen_cref_cleaner', '_make_iter_cursor', 'clear', 'close', 'db', 'dbc', 'first', 'get', 'has_key', 'isOpen', 'items', 'iteritems', 'iterkeys', 'itervalues', 'keys', 'last', 'next', 'pop', 'popitem', 'previous', 'saved_dbc_key', 'set_location', 'setdefault', 'sync', 'update', 'values']
>>> db.iteritems()
<generator object at 0x481760>
>>> db.__module__
'bsddb'
В системе отслеживания ошибок Python имеется ряд открытых проблем *1011*, касающихся некоторых несоответствий модулей dbm.