"ImportError: нет модуля с именем _bsddb" при открытии полки в контейнере Docker

Я хочу открыть полку внутри контейнера Docker, основанного на официальном образе Python, python: 2.7.9-wheezy. Но я получаю ошибку импорта.

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, поэтому я не понимаю, почему его нельзя импортировать.

Игнасио Васкес-Абрамс предлагают установить db4-devel, но этот пакет не доступен в моем контейнере.

Как открыть полку в контейнере Docker?

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, хотя)

Надеюсь, поможет!

(Я нахожусь в поезде прямо сейчас, поэтому обязательно опробую их для вас позже)


РЕДАКТИРОВАТЬ: Также эта страница дает много информации о поддерживаемых версиях.

Другие вопросы по тегам