shelve crashing under Win ME

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


On Saturday 30 June 2007 10:07, jim-on-linux 
wrote:
> 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


Correction:

I had to import dbhash into my program to make 
things work. 

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







More information about the Python-list mailing list