做一个简单shelve.open
的会出现以下错误:
>>> shelve.open('foo')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.6/shelve.py", line 243, in open
return DbfilenameShelf(filename, flag, protocol, writeback)
File "/usr/lib/python3.6/shelve.py", line 227, in __init__
Shelf.__init__(self, dbm.open(filename, flag), protocol, writeback)
File "/usr/lib/python3.6/dbm/__init__.py", line 94, in open
return mod.open(file, flag, mode)
_gdbm.error: [Errno 22] Invalid argument
我只遇到了一个与此问题相关的搜索结果:https ://github.com/pydanny/cookiecutter-django/issues/1793#issuecomment-440406112
我在 Vagrant 开发环境中遇到了完全相同的错误。Celery 使用 dbm 进行持久存储,它建立在 gdbm C 库之上。一些测试表明,这在本地文件系统上创建或打开文件时有效,但在已挂载的文件系统上无效。
我在 MacOS 的 Vagrant Ubuntu 机器下运行它,所以它是有道理的。我也在 Windows 10 下运行了同一个盒子,这个问题没有出现。任何修复的线索?