在Docker容器中打开搁置时,"ImportError:没有名为_bsddb的模块"

Ora*_*Tux 5 python bsddb docker

我想在基于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
Run Code Online (Sandbox Code Playgroud)

在我的主机上问题不存在,_bsddb位于 /usr/lib/python2.7/lib-dynload/_bsddb.so.这个文件也可以在我的Docker容器中使用,所以我不明白为什么它无法导入.

Ignacio Vazquez-Abrams建议安装db4-devel,但我的容器中没有此包.

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

mau*_*uvm 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)

希望能帮助到你!

(我现在在火车上,所以稍后一定会为您测试)


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