Installing bsddb3 6.1.1 in Windows: FileNotFoundError: 'db/include\\db.h'

Installing bsddb3 6.1.1 in Windows: FileNotFoundError: 'db/include\\db.h'

我 运行宁 Windows 7 x64, Python 3.4。当我 运行 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. I made sure I had the BSD DB Windows binaries from Oracle installed; I downloaded them from Berkeley DB 6.1.26.msi。将 includelib 目录从数据库安装移动到 bsddb3 文件夹中的 /db 目录,解决了无法找到库的问题。但是随后安装程序因 posix 部分中缺少的变量而失败,但未在 Windows 部分中正确声明。

修复该问题,并进行一些其他调整,[​​=15=] 实际上 运行 构建,但在收到一系列关于不安全转换的警告后,它因错误而失败:

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 或其他东西。

人们真的不想花几个晚上在 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

基于 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.And分为32位和64位版本windows

  • bsddb3‑6.2.5‑cp36‑cp36m‑win32.whl
  • bsddb3‑6.2.5‑cp36‑cp36m‑win_amd64.whl

偶然发现这个问题的人:

在 Windows 中几乎不可能让它工作。使用 WSL,你必须通过 apt 或 apt-get 安装 bsddb3:

apt-get install -y python3-bsddb3

pip 和 pip3 之外。