5

我想在基于 Python 的官方映像python:2.7.9-wheezy的 Docker 容器中打开一个搁置。但我收到一个导入错误。

syncer/util.py:19: in get_from_shelve
    db = shelve.open(conf.SHELVE_LOCATION)
/usr/local/lib/python2.7/shelve.py:239: in open
    return DbfilenameShelf(filename, flag, protocol, writeback)
/usr/local/lib/python2.7/shelve.py:223: in __init__
    Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback)
/usr/local/lib/python2.7/anydbm.py:84: in open
    mod = __import__(result)
/usr/local/lib/python2.7/dbhash.py:7: in <module>
    import bsddb
...
E           ImportError: No module named _bsddb

在我的主机上,问题不存在并且_bsddb位于 /usr/lib/python2.7/lib-dynload/_bsddb.so. 这个文件在我的 Docker 容器中也有,所以我不明白为什么不能导入。

Ignacio Vazquez-Abrams建议 install db4-devel,但我的容器中没有这个包。

如何打开 Docker 容器中的搁置?

4

1 回答 1

1

似乎您需要该libdb4.8-dev软件包(链接),但不幸的是,自从 Lucid 以来,该软件包不再可用。

我找到了一些可能的解决方案:

  1. sudo apt-get install libdb5.1++-dev链接
  2. libdb4.8++从 Lucid 存储库安装(链接
  3. sudo apt-get install libdb++-dev libminiupnpc-dev链接,可能需要重新安装 Python)

希望能帮助到你!

(我现在在火车上,所以以后一定会为你测试它们)


编辑:此页面还提供了有关受支持版本的大量信息。

于 2015-02-01T08:56:22.760 回答