Установка пакета bsddb - python
Я совершенно новичок в python, и у меня есть это сообщение, когда я пытаюсь импортировать bsdddb
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/bsddb/__init__.py", line 67, in <module>
import _bsddb
ImportError: No module named _bsddb
Итак, я следил за этим и этим, поэтому я загрузил этот пакет bsddb3-4.5.0.tar.gz
. Что я должен делать с этим, я попытался запустить python install setup.py int bsddb3-4.5.0 в правильном каталоге (я использую osx). Затем я получаю
Can't find a local BerkeleyDB installation.
(suggestion: try the --berkeley-db=/path/to/bsddb option)
Кто-нибудь может помочь?
Ответы
Ответ 1
bsddb устарел с версии 2.6. Идеальным является использование модуля bsddb3.
Мое предложение и, безусловно, самый простой вариант - установить Homebrew и использовать его для получения BerkeleyDB в вашей системе:
brew install berkeley-db
После этого установите bsddb3 с помощью pip
pip install bsddb3
или загрузите source и установите его нормально.
python setup.py install
Ответ 2
У меня была аналогичная проблема, но ни один из предложений не работал у меня, поскольку я не мог использовать лицензию AGPL или коммерческую лицензию Berkeley от Oracle.
BERKELEYDB_DIR=$(brew --cellar)/berkeley-db/6.1.26 pip install bsddb3
Collecting bsddb3
Using cached bsddb3-6.1.1.tar.gz
Complete output from command python setup.py egg_info:
Trying to use the Berkeley DB you specified...
Detected Berkeley DB version 6.1 from db.h
******* COMPILATION ABORTED *******
You are linking a Berkeley DB version licensed under AGPL3 or have a commercial license.
AGPL3 is a strong copyleft license and derivative works must be equivalently licensed.
You have two choices:
1. If your code is AGPL3 or you have a commercial Berkeley DB license from Oracle, please, define the environment variable 'YES_I_HAVE_THE_RIGHT_TO_USE_THIS_BERKELEY_DB_VERSION' to any value, and try to install this python library again.
2. In any other case, you have to link to a previous version of Berkeley DB. Remove Berlekey DB version 6.x and let this python library try to locate an older version of the Berkeley DB library in your system. Alternatively, you can define the environment variable 'BERKELEYDB_DIR', or 'BERKELEYDB_INCDIR' and 'BERKELEYDB_LIBDIR', with the path of the Berkeley DB you want to use and try to install this python library again.
Sorry for the inconvenience. I am trying to protect you.
More details:
https://forums.oracle.com/message/11184885
http://lists.debian.org/debian-legal/2013/07/
******* COMPILATION ABORTED *******
Однако исправление старой версии исправлено.
Установите более старую версию berkeley-db с помощью brew
brew install berkeley-db4
Затем, как было предложено установить bsddb3 с pip
pip install bsddb3
Тогда
BERKELEYDB_DIR=$(brew --cellar)/berkeley-db4/4.8.30 pip install bsddb3
(изменен из комментария Штефана Шмидта к ссылке на старый каталог berkeley-db версия)
Наконец, примените патч к dbhash.py, как описано здесь.
Ответ 3
@bamdan answer использует более раннюю версию Berkeley DB, если вы все еще хотите использовать последнюю версию Berkeley DB,
-
Сначала установите последнюю версию Berkeley DB
pip install berkeley-db
-
Во-вторых, установите переменную среды YES_I_HAVE_THE_RIGHT_TO_USE_THIS_BERKELEY_DB_VERSION
, чтобы указать, что у вас есть лицензия
BERKELEYDB_DIR=$(brew --cellar)/berkeley-db4/6.1.26 YES_I_HAVE_THE_RIGHT_TO_USE_THIS_BERKELEY_DB_VERSION=yes pip install bsddb3