在Windows中安装bsddb3 6.1.1:FileNotFoundError:'db / include \\ db.h'

时间:2015-11-14 23:41:54

标签: python windows python-3.x bsddb

我使用Python 3.4运行Windows 7 x64。当我运行pip install bsddb3时,我得到:

λ pip install bsddb3
Collecting bsddb3
  Using cached bsddb3-6.1.1.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 20, in <module>
      File "C:\Users\User\AppData\Local\Temp\pip-build-soqf0_qb\bsddb3\setup.py", line 42, in <module>
        import setup3
      File "C:\Users\User\AppData\Local\Temp\pip-build-soqf0_qb\bsddb3\setup3.py", line 375, in <module>
        with open(os.path.join(incdir, 'db.h'), 'r') as f :
    FileNotFoundError: [Errno 2] No such file or directory: 'db/include\\db.h'
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in C:\Users\User\AppData\Local\Temp\pip-build-soqf0_qb\bsddb3

所以我尝试了downloading the sources for bsddb3。我确保安装了Oracle的BSD DB Windows二进制文件;我是从Berkeley DB 6.1.26.msi下载的。将includelib目录从数据库安装移动到bsddb3文件夹中的/ db目录,修复了无法找到库的问题。但是,在posix部分中的缺失变量上设置失败但在Windows部分中没有正确声明。

修复了这个,以及其他一些调整,python setup.py build实际上运行了构建,但在发出一堆关于不安全转换的警告之后,它失败并出现错误:

warning: I don't know what to do with 'runtime_library_dirs': ['db/lib']
error: don't know how to set runtime library search path for MSVC++

我不知道下一步该做什么。除了重写我最初尝试使用的库以便它使用SQLAlchemy或其他东西。

2 个答案:

答案 0 :(得分:6)

一个人真的不想花几个晚上在Windows上编译它,所以最好的选择是使用Unofficial Windows Binaries for Python Extension Packages预先构建的二进制文件。

下载适用于您的Python版本(名称的cpXX部分)和架构(win_amd64或win32)的软件包,如bsddb3-6.1.1-cp34-none-win_amd64.whl,并使用pip安装它:

pip install bsddb3-6.1.1-cp34-none-win_amd64.whl

答案 1 :(得分:0)

基于cyberj0g的回答。 https://www.lfd.uci.edu/~gohlke/pythonlibs/#bsddb3

pip install bsddb3-6.1.1-cp34-none-win_amd64.whl

注意:cp部分对应于CPython版本。

这意味着cp36适用于CPython 3.6。并分为32位和64位版本的Windows

  • bsddb3-6.2.5-CP36-cp36m-win32.whl
  • bsddb3-6.2.5-CP36-cp36m-win_amd64.whl