shelve crashing under Win ME

jim-on-linux inq1ltd at verizon.net
Sat Jun 30 10:07:29 EDT 2007


On Saturday 30 June 2007 04:52, gluckj at gmail.com 
wrote:
> 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
> >>> f=shelve.open("foo")
>
> Traceback (most recent call last):
>   File "<pyshell#1>", line 1, in <module>
>     f=shelve.open("foo")
>   File "C:\PYTHON25\lib\shelve.py", line 225,
> in open return DbfilenameShelf(filename, flag,
> protocol, writeback)
>   File "C:\PYTHON25\lib\shelve.py", line 209,
> in __init__
>     Shelf.__init__(self, anydbm.open(filename,
> flag), protocol, writeback)
>   File "C:\PYTHON25\lib\anydbm.py", line 83, in
> open return mod.open(file, flag, mode)
>   File "C:\PYTHON25\lib\dbhash.py", line 16, in
> open return bsddb.hashopen(file, flag, mode)
> File "C:\PYTHON25\lib\bsddb\__init__.py", line
> 306, in hashopen
>     d.open(file, 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 yahoo.com

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.


jim-on-linux
http:\\www.inqvista.com


 










More information about the Python-list mailing list