How to Fix the Broken BSDDB Install in the Default Python Package on Mac OS X 10.5 Leopard?
Solution 1
Follow the instructions at http://marc-abramowitz.com/archives/2007/11/28/hacking-os-xs-python-dbhash-and-bsddb-modules-to-work/ .
Solution 2
The patch did not work for me and I had to replace the bsddb folder in /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7
with the bsddb3 in:
/usr/local/lib/python2.7/site-packages/bsddb3
Make sure you backup the bsddb folder just in case.
Solution 3
This pain persists on OSX 10.8. I could not install bsddb3 using macports py-bsddb3 into a virtualenv. What was very simple and did work is:
- install db53 from macports
- download and unpack bsddb3 source (https://pypi.python.org/pypi/bsddb3/6.1.0)
- sudo python setup.py –berkeley-db-incdir=/opt/local/include/db53 –berkeley-db-libdir=/opt/local/lib/db53 install
Comments
-
Noel almost 2 years
Do the following on the default Python install on Mac OS X 10.5 (Leopard) w/ Developer Tools:
noel ~ : python Python 2.5.1 (r251:54863, Jan 13 2009, 10:26:13) [GCC 4.0.1 (Apple Inc. build 5465)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import bsddb Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/bsddb/__init__.py", line 51, in <module> import _bsddb ImportError: No module named _bsddb
nice, huh? How do I fix this without giving up and installing/configuring/maintaining my own Python package as per TMNC's suggestion or using MacPorts etc?
Edit
I've gone around the problem by installing Python2.4 and BSDDB via MacPorts.
My question still stands: why is the default install broken and is it possible to fix it.
-
Noel almost 15 yearsYeah, I ran across that too. It's not the answer I'm looking for, in that you have to install/maintain another version of bsddb yourself. I am looking for a way to fix the default install of bsddb.
-
Jarret Hardie almost 15 yearsThis is a good suggestion... it isn't that you're installing/maintaining another version bsddb, you're installing the first one that works :-) There is no _bsddb anywhere on the system, so you're going to have to do something to produce the missing functionality that's required.
-
Alex Martelli almost 15 yearsthe bsddb module tries to load the _bsddb extension -- but the latter can only be built if libbsddb is present, and it isn't by default on MacOSX. So, Abramowitz shows one way you can remedy that. There is no way you can use the bsddb module if the latter can't load the underlying _bsddb one, so that's what you must remedy.
-
Noel almost 15 yearsThanks! The one point I was confused on Abramowitz's explanation was the modifications to the dbhash.py file--AFAIK, I'm not interested in importing both. Will it suffice to just get the bsddb3 installed, no hackery of dbhash required if I just want to import bsddb?
-
Alex Martelli almost 15 yearsIf you install bsddb3, you'll have to import bsddb3 as bsddb unless you want to do further hacking (renames &c). Abramowitz's patch to dbhash.py just performs this change in that module.
-
xrisk almost 9 yearsFor anybody using brew, the appropriate formula is
berkeley-db