"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.
Я нашел несколько возможных решений:
sudo apt-get install libdb5.1++-dev
( ссылка)- Установка
libdb4.8++
из репозитория Lucid ( ссылка) sudo apt-get install libdb++-dev libminiupnpc-dev
( ссылка может потребовать переустановки Python, хотя)
Надеюсь, поможет!
(Я нахожусь в поезде прямо сейчас, поэтому обязательно опробую их для вас позже)
РЕДАКТИРОВАТЬ: Также эта страница дает много информации о поддерживаемых версиях.