Re: shelve crashing under Win ME



On Saturday 30 June 2007 10:07, jim-on-linux
wrote:
On Saturday 30 June 2007 04:52,
gluckj@xxxxxxxxx

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@xxxxxxxxx

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




.



Relevant Pages

  • Re: shelve crashing under Win ME
    ... Python, when I do the following in IDLE ... in open return DbfilenameShelf(filename, flag, ... For those who know shelve, ... Py2exe on the VPC under Python 2.5.0, ...
    (comp.lang.python)
  • Re: shelve error
    ... Neither the book I am reading, "Beginning Python: ... shelve supplies a function open that is polymorphic to anydbm.open. ... the defaulf value for argument flag is 'c' (meaning, ... and opens an existing file, ...
    (comp.lang.python)
  • shelve crashing under Win ME
    ... Using the latest version of Python, ... return DbfilenameShelf(filename, flag, protocol, ... protocol, writeback) ... For those who know shelve, this should actually run fine (if the file ...
    (comp.lang.python)
  • py2exe with shelve error
    ... I have ran into a problem with py2exe 0.5.0 and shelve in python ... The script works fine standalone, but not with py2exe. ... skipping byte-compilation of C:\Program ...
    (comp.lang.python)
  • py2exe 0.6.9 released
    ... py2exe is a Python distutils extension which converts Python scripts ... Console and Windows applications, ... finally build real single-file executables. ...
    (comp.lang.python)