Установка пакета bsddb - python - программирование
Подтвердить что ты не робот

Установка пакета 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)

Кто-нибудь может помочь?

4b9b3361

Ответ 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