"ImportError: nessun module denominato _bsddb" quando si apre il ripiano nel contenitore Docker

Voglio aprire un ripiano in un contenitore Docker basato sull'image ufficiale di Python, python: 2.7.9-wheezy . Ma ho un errore di importzione.

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 

Sulla macchina host il problema non è presente e _bsddb si trova a /usr/lib/python2.7/lib-dynload/_bsddb.so . Questo file è disponibile anche nel mio contenitore Docker, quindi non capisco perché non possa essere importto.

Ignacio Vazquez-Abrams suggerisce di installare db4-devel , ma questo pacchetto non è disponibile nel mio contenitore.

Come aprire lo scaffale nel contenitore Docker?

Sembra che tu abbia bisogno del pacchetto libdb4.8-dev ( link ), ma purtroppo questo non è più disponibile da Lucid.

Ho trovato alcune possibili soluzioni:

  1. sudo apt-get install libdb5.1++-dev ( collegamento )
  2. Installazione di libdb4.8++ dal repository Lucid ( link )
  3. sudo apt-get install libdb++-dev libminiupnpc-dev ( collegamento , potrebbe richiedere la reinstallazione di Python però)

Spero che sia d'aiuto!

(Sono in treno in questo momento, quindi sicuramente li proverò più tardi)


EDIT: anche questa pagina fornisce molte informazioni sulle versioni supportte.