2015-01-31 3 views
5

Desidero aprire uno shelve all'interno di un contenitore Docker basato sull'immagine ufficiale di Python, python:2.7.9-wheezy. Ma ottengo un errore di importazione."ImportError: nessun modulo denominato _bsddb" quando si apre shelve nel contenitore 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 

Sulla mia macchina host il problema non c'è 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 può essere importato.

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

Come si apre la mensola nel contenitore Docker?

risposta

1

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

ho trovato alcune soluzioni possibili:

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

Spero che aiuti!

(Sono sul treno adesso, quindi sarà sicuramente li prova per te più tardi)


EDIT: Inoltre this page dà un sacco di informazioni su versioni supportate.

+0

Sfortunatamente, non ha funzionato per me. Per ora uso [google/python] (https://registry.hub.docker.com/u/google/python/). Ma questa immagine non contiene Python 2.7.9, ma è fornita con Python 2.7.2 – OrangeTux

Problemi correlati