22

私は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)

誰かが助けることができますか?

4

4 に答える 4

20

bsddb は2.6 以降非推奨ですbsddb3 モジュールを使用するのが理想的です。

私の提案であり、最も簡単なオプションは、Homebrewをインストールし、それを使用してシステムに BerkeleyDB を取得することです。

brew install berkeley-db

この後、 pipを使用してbsddb3をインストールします

pip install bsddb3

または、ソースをダウンロードして通常どおりインストールします。

python setup.py install
于 2013-06-20T12:10:57.423 に答える
11

同様の問題がありましたが、AGPLライセンスまたは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 *******

ただし、古いバージョンに戻すと修正されました。

brew で古いバージョンの berkeley-db をインストールする

brew install berkeley-db4

次に、提案されているように、pipでbsddb3をインストールします

pip install bsddb3

それで

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

(古い berkeley-dbバージョンのディレクトリを参照するように Stefan Schmidt のコメントから変更)

最後に、ここで説明されているように、dbhash.py にパッチを適用します。

于 2015-12-02T11:34:21.367 に答える
7

@bamdanの回答では、最新の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
    
于 2016-10-19T17:45:49.447 に答える