How to Fix the Broken BSDDB Install in the Default Python Package on Mac OS X 10.5 Leopard?

15,260

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
Share:
15,260
Noel
Author by

Noel

Inscrutable hair in an inscrutable world.

Updated on June 09, 2022

Comments

  • Noel
    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
    Noel almost 15 years
    Yeah, 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
    Jarret Hardie almost 15 years
    This 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
    Alex Martelli almost 15 years
    the 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
    Noel almost 15 years
    Thanks! 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
    Alex Martelli almost 15 years
    If 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
    xrisk almost 9 years
    For anybody using brew, the appropriate formula is berkeley-db