2014-12-11 142 views
0

我在使用我的dev服务器上搁置时遇到问题。当我调用shelve.open()时,我的本地机器会创建一个新文件。但是,当我将文件推送到远程服务器时,会发生错误。看起来它试图首先找到该文件,并且因为它不在那里而失败。我没有改变文件扩展名。我的本地机器是Ubuntu 14,我的远程机器是CentOS 6.这里是python堆栈跟踪。 Python 2.6。Shelve.open创建失败

File "/var/lib/jenkins/................/translation.py", line 51, in _market 
    lang_db = shelve.open(market + "_pydb") 
File "/usr/lib64/python2.6/shelve.py", line 239, in open 
    return DbfilenameShelf(filename, flag, protocol, writeback) 
File "/usr/lib64/python2.6/shelve.py", line 223, in __init__ 
    Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) 
File "/usr/lib64/python2.6/anydbm.py", line 83, in open 
    return mod.open(file, flag, mode) 
File "/usr/lib64/python2.6/dbhash.py", line 19, in open 
    return bsddb.hashopen(file, flag, mode) 
File "/usr/lib64/python2.6/bsddb/__init__.py", line 361, in hashopen 
    d.open(file, db.DB_HASH, flags, mode) 
DBNoSuchFileError: (2, 'No such file or directory') 

为了记录,我将默认值更改为dumbdbm,它仍然给我一个IO错误(未找到文件)。

import anydbm 
anydbm._defaultmod = __import__('dumbdbm') 

回答

0

我发现当我推送到存储库时,git没有包含我查找的目录,因为它是空的。如果您尝试使用shelve.open以及一个不存在的目录中的参数,则会给您一个IO错误。我只是强制创建目录,现在它工作。