簡體   English   中英

安裝 bsddb 包 - python

[英]Installing bsddb package - 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 the bsddb3-4.5.0 (我使用的是 osx)。 然后我得到

Can't find a local BerkeleyDB installation.
(suggestion: try the --berkeley-db=/path/to/bsddb option)

有人可以幫忙嗎?

bsddb自 2.6起已棄用 理想的情況是使用bsddb3 模塊

我的建議,也是迄今為止最簡單的選擇,是安裝Homebrew並使用它在您的系統上獲取 BerkeleyDB:

brew install berkeley-db

在此之后使用pip安裝 bsddb3

pip install bsddb3

或者下載源碼並正常安裝。

python setup.py install

我遇到了類似的問題,但沒有任何建議對我有用,因為我無法使用 Oracle 的 AGPL 許可證或商業 Berkeley 許可證。

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 *******

但是恢復到舊版本修復了它。

使用 brew 安裝舊版本的 berkeley-db

brew install berkeley-db4

然后按照建議使用 pip 安裝 bsddb3

pip install bsddb3

然后

BERKELEYDB_DIR=$(brew --cellar)/berkeley-db4/4.8.30 pip install bsddb3

(從 Stefan Schmidt 的評論中修改以引用舊的 berkeley-db版本目錄)

最后按此處所述將補丁應用於 dbhash.py。

@bamdan 的回答使用舊版本的 Berkeley DB,如果您仍想使用最新的 Berkeley DB,

  • 一、安裝最新的Berkeley DB

     pip install berkeley-db
  • 二、設置環境變量YES_I_HAVE_THE_RIGHT_TO_USE_THIS_BERKELEY_DB_VERSION ,表示你有license

     BERKELEYDB_DIR=$(brew --cellar)/berkeley-db4/6.1.26 YES_I_HAVE_THE_RIGHT_TO_USE_THIS_BERKELEY_DB_VERSION=yes pip install bsddb3

我只是想添加一些目前缺少的東西,我是 Linux Ubuntu/Debian 用戶,但我必須讓我的 python 腳本在 macOS 系統上運行。 我遇到了 user1611830 遇到的相同問題。

我按照上面弗朗西斯科·羅克和肖恩解釋的步驟進行了操作。 但是,我遇到了相同的初始問題。 我看到了 Bamdan 的回答,想看看他提到的補丁修改 dbhash.py 使用他提供的鏈接source 但是“補丁”鏈接不再有效。

我發現為了按照源代碼中的說明修改 dbhash.py,需要禁用系統完整性保護,因此請按照此答案禁用SIP 的說明進行操作。 之后,我可以修改 dbhash.py 並且新的 bsddb3 工作,我可以使用擱置讀取以前保存的工作區。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM