我在开发服务器上使用搁置时遇到问题。当我调用shelve.open()时,我的本地机器会创建一个新文件。但是当我将文件推送到远程服务器时,会发生错误。它看起来好像是在试图找到该文件而它失败了,因为它不在那里。我没有更改文件扩展名。我的本地机器是Ubuntu 14,我的遥控器是CentOS 6.这是python堆栈跟踪。 Python 2.6。
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 :(得分:0)
我发现当我推送到存储库时,git并不包括我正在查找的目录,因为它是空的。如果您尝试将shelve.open
与不存在的目录中的参数一起使用,则会出现IO错误。我只是强迫创建目录,现在它可以工作。