1

BSD以外のシステム(Ubuntu、RHEL)でPythonでBerkeley DB 1.85ファイルを開くにはどうすればよいですか?

$ file 1.db 
1.db: Berkeley DB 1.85 (Hash, version 2, native byte-order)

私が実行しようとしているコード:

    import bsddb

    cur_dir = os.path.dirname(__file__)
    db_file_path = os.path.join(cur_dir, '1.db')
    db = bsddb.hashopen(db_file_path, 'r')
    for k, v in db.iteritems():
        print k, v

これは例外です:

  File "....py", line 22, in handle
    db = bsddb.hashopen(db_file_path, 'r')
  File "/usr/lib/python2.7/bsddb/__init__.py", line 364, in hashopen
    d.open(file, db.DB_HASH, flags, mode)
bsddb.db.DBInvalidArgError: (22, 'Invalid argument -- __db_meta_setup: /.../1.db: unexpected file type or format')
enter code here

pipbsddb185モジュールをインストールしたくない:

$ pip install bsddb185
Downloading/unpacking bsddb185
  Running setup.py egg_info for package bsddb185
    Didn't find db.h with HASHVERSION == 2
No files/directores in /.../build/bsddb185/pip-egg-info (from dependency_links.txt)
4

2 に答える 2

1

OK、私の同僚がソースからモジュールをビルドするのを手伝ってくれました。

ここからソースをダウンロードしてください: http://pypi.python.org/pypi/bsddb185

それで:

cd bsddb185/db.1.85/PORT/linux/
make
cd ../../..
python setup.py install
于 2012-10-16T10:46:41.017 に答える
0

ドキュメントでは、bsddb.dbを優先して、このモジュールを非推奨にすることを推奨しています。bsddbを使い続けている場合は、「bsddbモジュールには4.0から4.7までのバージョンのBerkeleyDBライブラリが必要です」というコメントもあります。

ドキュメント:http ://docs.python.org/library/bsddb.html

この点のいくつかが正しい方向に進んでいることを願っています。申し訳ありませんが、これ以上お役に立てることはありません。

于 2012-10-16T10:13:07.207 に答える