I blogged previously about how to build _bsddb for Python 2.6 by hacking the Python source code to accommodate changes in berkeley-db.
Here’s an easier way that doesn’t require hacking source code.
Install berkeley-db using Homebrew:
brew install berkeley-db
Install the bsddb3 module, pointing it at an installation of berkeley-db:
sudo \ BERKELEYDB_DIR=/usr/local/Cellar/berkeley-db/5.3.28 \ pip-2.6 install bsddb3
Simply copy it into the appropriate place as _bsddb.so
. This is super hacky and will fail if the interfaces of these two ever change, but for now for my limited purpose, it seems to work:
cp \ /Library/Python/2.6/site-packages/bsddb3/_pybsddb.so \ /Library/Frameworks/Python.framework/Versions/2.6/lib \ /python2.6/lib-dynload/_bsddb.so
Enjoy:
$ python2.6 Python 2.6.7 (r267:88850, Oct 11 2012, 20:15:00) [GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import bsddb >>> dir(bsddb) ['MutableMapping', '_DBWithCursor', '_DeadlockWrap', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '__version__', '_bsddb', '_checkflag', '_db', '_iter_mixin', '_openDBEnv', 'absolute_import', 'btopen', 'collections', 'db', 'dbutils', 'error', 'hashopen', 'os', 'ref', 'rnopen', 'sys']
guys, do note that having updated the .py file, it’s important to remove the generated .pyc. I spent a good hour (not knowing how python works) wondering why the patch won’t the actual source displayed… oops! 🙂
Another BIG THANK YOU for providing this inaetllsr. I have had a terrible time trying to do the compilation of ext libraries myself using mingw32 and VS2005, without luck. With your bit I finally can go on working with ZSI. Maybe one day you could explain, how you did it.