杰瑞科技汇

Python pycrypto安装失败怎么办?

pycrypto 已被废弃

也是最重要的一点:pycrypto 项目已经不再维护,最后一个稳定版本发布于 2025 年,这通常意味着它可能存在未被发现的安全漏洞,并且不兼容较新版本的 Python 和操作系统。

Python pycrypto安装失败怎么办?-图1
(图片来源网络,侵删)

强烈建议您使用它的替代品 pycryptodomepycryptodomepycrypto 的一个分支,它旨在成为 pycrypto 的一个直接、安全的替代品,拥有几乎完全相同的 API,并且积极维护。

除非您有特殊原因(例如维护一个非常古老的项目),否则请优先选择 pycryptodome


推荐安装 pycryptodome (首选)

pycryptodomepycrypto 的直接替代品,安装和使用都非常简单。

安装

使用 pip 进行安装,打开您的终端或命令提示符,然后运行以下命令:

Python pycrypto安装失败怎么办?-图2
(图片来源网络,侵删)
# 在 Linux 或 macOS 上
pip install pycryptodome
# 在 Windows 上
pip install pycryptodome

注意:

  • 如果您使用的是 Python 3,并且系统中有多个 Python 版本,建议使用 pip3 来确保安装到正确的 Python 环境中:
    pip3 install pycryptodome
  • 如果您遇到权限问题,可以尝试在命令前加上 sudo (macOS/Linux) 或以管理员身份运行终端 (Windows)。

验证安装

安装完成后,您可以在 Python 代码中导入它来验证是否成功。

from Crypto.Cipher import AES
from Crypto import Random
# 创建一个随机的密钥和初始化向量 (IV)
key = Random.get_random_bytes(16)  # AES-128
iv = Random.get_random_bytes(16)
# 创建一个 AES 加密器
cipher = AES.new(key, AES.MODE_CBC, iv)
# 要加密的数据
data = b"这是一段需要加密的秘密信息。"
# 加密数据
ct_bytes = cipher.encrypt(data)
print("加密成功!")
print(f"密钥: {key}")
print(f"密文: {ct_bytes}")

如果这段代码可以正常运行而没有报错,说明 pycryptodome 已经成功安装。

pycrypto 的代码兼容性

pycryptodome 的设计目标是与 pycrypto 100% 兼容,这意味着,如果您原来使用 pycrypto 的代码,几乎不需要任何修改就可以直接使用 pycryptodome

Python pycrypto安装失败怎么办?-图3
(图片来源网络,侵删)

唯一的区别在于导入方式pycryptodome 将所有功能都放在顶级包中,以避免与标准库或其他库发生命名冲突。

功能 pycrypto 导入方式 pycryptodome 导入方式
AES 加密 from Crypto.Cipher import AES from Crypto.Cipher import AES (相同)
Hash (SHA256) from Crypto.Hash import SHA256 from Crypto.Hash import SHA256 (相同)
随机数生成 from Crypto import Random from Crypto import Random (相同)
RSA 密钥 from Crypto.PublicKey import RSA from Crypto.PublicKey import RSA (相同)

大部分情况下,导入语句是相同的。 如果您的代码报错,请检查是否是 pycrypto 特有的、已被 pycryptodome 移除或更改的用法,这种情况非常罕见。


安装 pycrypto (不推荐)

如果您确实因为某些特殊原因需要安装 pycrypto,请继续阅读,这通常会遇到更多问题,尤其是在 Windows 和较新版本的 Python 上。

安装方法

pycrypto 没有官方的预编译包(wheel),pip 会尝试从源代码编译安装,这需要您系统上安装了 C 编译器。

方法 A:使用 pip (可能失败)

最简单的方法是直接使用 pip,但如果您的系统缺少编译环境,它会失败。

pip install pycrypto

如果失败,通常的错误信息会提示缺少 gccmsvc

方法 B:使用预编译的 .whl 文件 (推荐)

为了避免编译问题,最好的方法是手动下载一个与您的 Python 版本和操作系统匹配的预编译包(wheel 文件,.whl)。

  1. 访问 PyPI 页面: 访问 pycrypto 的 PyPI 页面:https://pypi.org/project/pycrypto/

  2. 找到合适的 .whl 文件: 滚动到页面下方 "Files" 部分,您会看到很多 .whl 文件。

    • 文件名格式通常是 pycrypto-{version}-{python_tag}-{platform_tag}.whl
    • python_tagcp36, cp37, cp38, cp39, cp310, cp311,这必须与您的 Python 版本匹配,您可以在终端运行 python --version 查看。
    • platform_tag
      • win_amd64:用于 64 位 Windows。
      • manylinux1_x86_64:用于大多数 64 位 Linux 发行版。
      • macosx_10_9_x86_64:用于 64 位 macOS。
  3. 下载并安装

    • 下载正确的 .whl 文件。

    • 打开终端,使用 pip 和文件的完整路径进行安装,如果文件下载到了 Downloads 文件夹:

      # 在 Linux/macOS 上
      pip install /path/to/your/downloads/pycrypto-2.6.1-cp38-cp38-manylinux1_x86_64.whl
      # 在 Windows 上 (路径可能需要用引号括起来)
      pip install "C:\Users\YourUser\Downloads\pycrypto-2.6.1-cp38-cp38-win_amd64.whl"

常见问题及解决方案

  • 错误:Microsoft Visual C++ 14.0 is required (Windows) 这意味着您缺少 C++ 编译器,您需要安装 "Microsoft C++ Build Tools"。

    • 解决方案:访问 Visual Studio 下载页面,下载并安装 "Build Tools for Visual Studio",在安装程序中,确保勾选 "C++ build tools"。
  • 错误:error: Microsoft Visual C++ 9.0 is required (Unable to find vcvars.bat) (Windows) pycrypto 的旧版本需要 Visual Studio 2008 (VC9) 的编译器,这在现代系统上很难找到。

    • 解决方案:尝试找到更新的 pycrypto 版本的 .whl 文件,或者更推荐地,直接换用 pycryptodome
  • 错误:fatal error: openssl/evp.h: No such file or directory (Linux/macOS) 这意味着您缺少 OpenSSL 开发库。

    • 解决方案
      • 在 Debian/Ubuntu 上sudo apt-get update && sudo apt-get install build-essential libssl-dev
      • 在 Fedora/CentOS/RHEL 上sudo dnf groupinstall "Development Tools" && sudo dnf install openssl-devel
      • 在 macOS 上 (使用 Homebrew)brew install openssl
特性 pycryptodome (推荐) pycrypto (不推荐)
状态 积极维护 已废弃
安全性 相对安全,漏洞会被修复 可能有未修复的安全漏洞
安装 pip install pycryptodome,通常一次成功 可能需要编译器或手动下载 .whl 文件,过程复杂
兼容性 API 与 pycrypto 几乎完全相同 -
社区支持 活跃

最终建议:

请直接使用 pycryptodome,它能为您节省大量时间和精力,并且能确保您的项目使用的是更安全、更现代的加密库,只有当您维护一个无法修改依赖的旧项目时,才考虑去折腾 pycrypto

分享:
扫描分享到社交APP
上一篇
下一篇