2015-01-31 6 views
5

Chcę otworzyć shelve w pojemniku Docker na podstawie oficjalnego obrazu Pythona, python:2.7.9-wheezy. Ale dostaję błąd importu."ImportError: Brak modułu o nazwie _bsddb" podczas otwierania półki w pojemniku 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 

Na moim komputerze hosta problem nie istnieje i _bsddb znajduje się /usr/lib/python2.7/lib-dynload/_bsddb.so. Ten plik jest również dostępny w moim kontenerze Docker, więc nie rozumiem, dlaczego nie można go zaimportować.

Ignacio Vazquez-Abrams sugeruję zainstalować db4-devel, ale ten pakiet nie jest dostępny w moim pojemniku.

Jak otworzyć półkę w pojemniku Docker?

Odpowiedz

1

Wygląda na to, że potrzebujesz pakietu libdb4.8-dev (link), ale niestety nie jest on już dostępny od Lucid.

I znaleziono kilka możliwych rozwiązań:

  1. sudo apt-get install libdb5.1++-dev (link)
  2. Instalacja libdb4.8++ z Lucid repozytorium (link)
  3. sudo apt-get install libdb++-dev libminiupnpc-dev (link może wymagać ponownej instalacji Pyton chociaż)

Mam nadzieję, że to pomoże!

(jestem w pociągu w tej chwili, więc na pewno przetestować je na później)


EDIT: Również this page daje dużo informacji na temat obsługiwanych wersji.

+0

Niestety, to nie działa dla mnie. Na razie używam [google/python] (https://registry.hub.docker.com/u/google/python/). Ale ten obraz nie zawiera Pythona 2.7.9, ale jest dostarczany z Pythonem 2.7.2 – OrangeTux

Powiązane problemy