python使用Crypto报错ModuleNotFoundError: No module named 'Crypto'解决方案

756 阅读2分钟

一、Crypto 库介绍

Crypto 是一个 Python 加密库,它提供了许多加密算法的实现,包括对称加密算法、非对称加密算法、哈希算法等。通过使用 Crypto 库,可以轻松地实现各种加密任务,例如数据加密、数字签名、哈希计算等。

Crypto 库的加密算法实现经过了严格的质量控制和测试,以确保其安全性和可靠性。此外,Crypto 库还提供了许多其他功能,例如密码学原语、随机数生成、Base64 编码等。

二、报错代码

#原代码
from Crypto.Cipher import DES
from Crypto.Util.Padding import pad
#报错信息
Traceback (most recent call last):
  File "D:\xxx\xxxx\demo.py", line 2, in <module>
    from Crypto.Cipher import DES
ModuleNotFoundError: No module named 'Crypto'

三、处理方式

1、常规处理方式

pip install Crypto
#或python3
pip3 install Crypto

正常的经过上边代码后,就可以正常运行了。但是还有例外,比我运气爆棚的我经过上边代码后,显示正常,但是运行后还是报错

image.png

然后我尝试了删除重装

pip  uninstall  Crypto
#重新安装
pip install Crypto

我经过重新安装后,还是无法使用

2、非常规处理方式

还是作为运气爆棚的我,常规方式不行了,那么就要开始排查各种问题,包括查版本,查代码,查权限,查解释器,甚至用上了新科技 GPT,然后,还是不行,在经过我七七八十九次排错后,我发现,我将解释器目录下的“\Lib\site-packages”目录里,找到了,”crypto“目录

image2.png

我将其改成大写 C,改成“Crypto”后,再去运行发现无报错,运行正常

image1.png

四、原因

可能是由于 Python 包管理器 pip 在下载和安装包时默认将大小写敏感的文件名保持一致,因此在安装 Crypto 库时,会将文件名保持为"crypto",而 Python 的模块导入是大小写敏感的,因此需要手动将文件名改为大写的"Crypto"才能正常运行。

本人萌新安全工程师一枚,才疏学浅,可能解释的不对,望指正,谢谢。