shelve crashing under Win ME

jim-on-linux inq1ltd at
Sat Jun 30 16:07:29 CEST 2007

On Saturday 30 June 2007 04:52, gluckj at 
> Hi,
> I'm not a Win ME fan myself (I'm a Mac user),
> but I'm here in Thailand developing software
> for special-needs kids, and the test PC in my
> home office is a Win ME machine (sigh). So when
> I ported my Python program today to the PC, it
> quickly crashed. Everything seems to work
> except for shelve. Using the latest version of
> Python (2.5.1), when I do the following in IDLE
> on the Win ME machine here's the result:
> Python 2.5.1 (r251:54863, Apr 18 2007,
> 08:51:08) [MSC v.1310 32 bit (Intel)] on win32
> IDLE 1.2.1
> >>> import shelve
> >>>"foo")
> Traceback (most recent call last):
>   File "<pyshell#1>", line 1, in <module>
>   File "C:\PYTHON25\lib\", line 225,
> in open return DbfilenameShelf(filename, flag,
> protocol, writeback)
>   File "C:\PYTHON25\lib\", line 209,
> in __init__
>     Shelf.__init__(self,,
> flag), protocol, writeback)
>   File "C:\PYTHON25\lib\", line 83, in
> open return, flag, mode)
>   File "C:\PYTHON25\lib\", line 16, in
> open return bsddb.hashopen(file, flag, mode)
> File "C:\PYTHON25\lib\bsddb\", line
> 306, in hashopen
>, db.DB_HASH, flags, mode)
> DBError: (5, 'Input/output error')
> For those who know shelve, this should actually
> run fine (if the file "foo" does not exist it
> should create it). Printing the value of "f"
> should show an empty dictionary {}.
> It does run fine on my iBook (under Python
> 2.4.4) and on my iBook's Virtual PC running Win
> XP & Python 2.5.0. I do not think this is a
> Python 2.5.1 problem, because my first attempt
> to run my program on the Win ME machine was
> with a version of the program I ported using
> Py2exe on the VPC under Python 2.5.0, and it
> crashed the same way when run on the Win ME
> machine (I subsequently installed Python on the
> Win ME PC to try to get to the root of the
> problem.)
> Help! How do I get Win ME (or at least the
> misbehaving Win ME machine in my office) to run
> shelve? (or more specifically run bsddb's
> hashopen?)
> Or should I trash shelve entirely and rewrite
> all my code to use a simpler, homemade database
> scheme?
> Thanks for any advice!
> Warmly,
> Joel
> joelgluck at

what version of py2exe are you using?

I had a similar problem with an old version of 
py2exe but it it is fixed now.  If my memory is 
correct I had to import dbhash into my setup for 
py2exe back then to fix it.. 

Your code for shelve is correct, the problem is 
someplace else.



More information about the Python-list mailing list