Bugs item #731501, was opened at 2003-05-02 12:56
Message generated for change (Comment added) made by montanaro
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=731501&group_id=5470
Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Python Library
Group: Python 2.3
>Status: Closed
Resolution: Accepted
Priority: 5
Submitted By: Nick Vargish (vargish)
Assigned to: Skip Montanaro (montanaro)
Summary: Importing anydbm generates exception if _bsddb unavailable
Initial Comment:
The anydbm module attempts to import the dbhash module,
which fails if there is no BSD DB module available.
Relevant portion of backtrace:
File "/diska/netsite-docs/cgi-bin/waisdb2.py", line
124, in _getsystemsdbm
dbsrc = anydbm.open(self.dbfile)
File
"/usr/local/python-2.3b1/lib/python2.3/anydbm.py", line
82, in open
mod = __import__(result)
File
"/usr/local/python-2.3b1/lib/python2.3/dbhash.py", line
5, in ?
import bsddb
File
"/usr/local/python-2.3b1/lib/python2.3/bsddb/__init__.py",
line 40, in ?
import _bsddb
ImportError: No module named _bsddb
Tests that explicitly use "import dbm" rather than
anydbm are successful on this system.
----------------------------------------------------------------------
>Comment By: Skip Montanaro (montanaro)
Date: 2005-05-22 20:38
Message:
Logged In: YES
user_id=44345
ancient history i just never closed
----------------------------------------------------------------------
Comment By: Fred L. Drake, Jr. (fdrake)
Date: 2004-06-24 01:09
Message:
Logged In: YES
user_id=3066
The doc changes look mostly fine to me (and I've changed
what didn't; a small cosmetic nit).
I'm just amazed we're still spending time tweaking BSD DB; I
don't think that's ever "just worked" for me without digging
around for a version of the underlying library that worked
with Python.
----------------------------------------------------------------------
Comment By: Skip Montanaro (montanaro)
Date: 2003-05-06 15:54
Message:
Logged In: YES
user_id=44345
Assigned to Fred for doc review - I added a couple notes to libbsddb.tex
and libundoc.tex in lieu of actually creating a separate bsddb185 section
which I felt would have given people the mistaken idea that the module is
available for general use. Still, I thought there should be some mention in
the docs.
Library detection probably needs a little tweakage as well.
----------------------------------------------------------------------
Comment By: Martin v. L�wis (loewis)
Date: 2003-05-05 16:55
Message:
Logged In: YES
user_id=21627
Actually, you probably need to check whether
/usr/lib/libdb.* is present, and link with that as well if
it is.
If you are uncertain whether this is the right library, I
see no way except to run a test program, at configure time,
that creates a database and determines whether this really
is a DB 1.85 database. Alternatively, the test program might
try to invoke db_version. If the function is available, it
is DB x, x>=2 (DB1 apparently has no version indication
function).
----------------------------------------------------------------------
Comment By: Martin v. L�wis (loewis)
Date: 2003-05-05 15:34
Message:
Logged In: YES
user_id=21627
I can't actually test the patch, but it looks good to me.
Please apply!
----------------------------------------------------------------------
Comment By: Skip Montanaro (montanaro)
Date: 2003-05-05 09:27
Message:
Logged In: YES
user_id=44345
I believe the attached patch does what's necessary to get this to work again.
It does a few things:
* setup.py builds the bsddb185 under the right (restrictive) circumstances.
/usr/include/db.h must exist and HASHVERSION must be 2. In this case
the bsddb185 module will be built without any extra includes, libraries
or #defines, forcing whatever is present in /usr/include/db.h and libc to
be used to build the module.
* whichdb.py detects the older hash file format and returns
"bsddb185".
* bsddbmodule.c grows an extra undocumented attribute, "open".
The last two changes avoid having to change dbhash.py in complicated
ways to distinguish between new and old file versions. The format-
detecting mess remains isolated to whichdb.py.
Using this setup I was successfully able to open /etc/pwd.db on my
system using anydbm.open(), which I was unable to do previously. I can
also still open a more recent hash file created with anydbm.open. Finally,
new files created with anydbm.open are in the later format.
Please give it a try.
----------------------------------------------------------------------
Comment By: Martin v. L�wis (loewis)
Date: 2003-05-03 04:02
Message:
Logged In: YES
user_id=21627
I think this is not a bug. open() has determined that this
is a bsddb file, but bsddb is not supported on the system.
Or did you mean to suggest that opening the very same file
with dbm would be successful?
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=731501&group_id=5470
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com