On Saturday 30 June 2007 04:52, [EMAIL PROTECTED] 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 > [EMAIL PROTECTED]
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 -- http://mail.python.org/mailman/listinfo/python-list