9

我正在使用 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

所以我尝试下载 bsddb3 的源代码。我确保安装了 Oracle 的 BSD DB Windows 二进制文件;我从Berkeley DB 6.1.26.msi下载了它们。将includelib目录从 DB 安装移动到 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 或其他东西。

4

3 回答 3

11

一个人真的不想花几个晚上在 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
于 2015-12-17T18:24:23.893 回答
2

基于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的。并且针对windows分为32位和64位版本

  • bsddb3‑6.2.5‑cp36‑cp36m‑win32.whl
  • bsddb3‑6.2.5‑cp36‑cp36m‑win_amd64.whl
于 2017-12-19T10:03:48.430 回答
0

有人会偶然发现这个问题:

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

apt-get install -y python3-bsddb3

在 pip 和 pip3 之外。

于 2022-01-05T03:33:39.963 回答