我通过 pip 在 Windows 上安装了 PyCrypto,但我无法构建 Crypto.PublicKey._fastmath,因为找不到 GMP。
我知道 voidspace 有一个二进制版本,但我想构建最新版本的 PyCrypto
在 Windows 上使用 GMP 或 MPIR 构建 PyCrypto 的 _fastmath 模块可能很复杂,因为没有针对此配置的直接支持。 PyCrypto 的 _fastmath 模块旨在利用 GMP 或 MPIR 等库来提高加密操作的速度。但是,这些库通常不包含在 Windows 中,并且与 PyCrypto 的集成需要手动构建和链接。
以下是一些可以尝试的解决方法:
1. 使用预构建的二进制文件:
如你所述,使用预构建的二进制文件(如 Christoph Gohlke 的网站上提供的二进制文件)通常是 Windows 上最简单的选择。这些二进制文件通常包含对 GMP 或 MPIR 的必要支持,从而使你无需自行构建即可使用 _fastmath。
- 你可以在 https://www.lfd.uci.edu/~gohlke/pythonlibs/ 上找到适用于你的 Python 版本的 PyCrypto 的预构建的 Windows 轮子。
-
下载相应的
.whl
文件,然后使用pip install <文件名>.whl
进行安装。
2. 使用 Windows 的 Linux 子系统 (WSL):
如果你对在 Linux 环境中构建 PyCrypto 感到满意,则可以使用 Windows 的 Linux 子系统 (WSL)。WSL 允许你在 Windows 上运行 Linux 环境,从而可以更轻松地安装和使用 GMP 或 MPIR 等库。
以下是使用 WSL 构建 PyCrypto 的一般步骤:
- 安装你选择的 WSL 发行版(例如 Ubuntu)。
-
在 WSL 环境中,使用
apt-get
等包管理器安装 Python、pip、gcc 和 libgmp-dev。 -
从源代码安装 PyCrypto:
pip install pycryptodome
(PyCryptodome 是 PyCrypto 的分支,维护得更好)。 - 确认 _fastmath 是否通过运行一个简单的测试脚本来工作。
3. 手动构建 GMP/MPIR 和 PyCrypto:
这对于没有经验的用户来说是最具挑战性的方法。你需要编译 GMP 或 MPIR,然后在构建 PyCrypto 时链接到它。此过程涉及修改 PyCrypto 的安装脚本,并且需要对构建系统有深入的了解。
其他选择:
- 使用不依赖 _fastmath 的其他库: 考虑使用不依赖于 _fastmath 模块并且在 Windows 上提供更直接支持的替代加密库。其中一个流行的选择是 cryptography 库,它提供了广泛的加密原语,并且以其跨平台兼容性而闻名。你可以在 https://cryptography.io/ 找到有关 cryptography 库的更多信息。
- 探索纯 Python 库: 一些加密库完全在 Python 中实现,避免了对 C 扩展或外部依赖项的需求。这些库可能提供较慢的性能,但可以提供更轻松的安装和平台兼容性。
请记住,在 Windows 上使用 GMP 或 MPIR 构建 PyCrypto 的 _fastmath 模块可能是一个复杂且容易出错的过程。除非你需要 _fastmath 提供的特定性能优化,否则使用预构建的二进制文件或探索替代加密库通常是更实际和更省时的选择。
标签:python,windows,pip,pycrypto From: 10938274