2012-10-16 72 views
1

如何在非BSD系統(Ubuntu,RHEL)上以Python打開Berkeley DB 1.85文件?在非BSD系統上以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 

pip不希望安裝bsddb185模塊:

$ 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) 

回答

0

文檔建議不推薦使用此模塊以支持bsddb.db。如果你堅持使用bsddb,他們也會發表評論:「bsddb模塊需要4.0到4.7的Berkeley DB庫版本。」

文檔:http://docs.python.org/library/bsddb.html

希望在正確的方向一些這點,對不起,我不能提供更多的幫助。

1

好的,我的一位同事幫助我從源碼構建模塊。

在這裏下載源:http://pypi.python.org/pypi/bsddb185

然後:

cd bsddb185/db.1.85/PORT/linux/ 
make 
cd ../../.. 
python setup.py install 
+2

這並不與1.1工作,因爲沒有目錄'db.1.85 /'源根。 –