ImportError: 导入错误:找不到名为Crypto.Cipher的模块

当我尝试运行app.py(Python 3.3, PyCrypto 2.6)时,我的虚拟环境总是返回上述错误。我的导入语句只是from Crypto.Cipher import AES。我查找了重复的问题,你可能会说有一些,但我尝试了解决方案(尽管大多数甚至不是解决方案), 但什么都没用。

你可以在下面看到 PyCrypto 的文件:

715538 次浏览

我也有同样的问题(尽管是在 Linux 上) ,解决方法很简单——添加:

libraries:
- name: pycrypto
version: "2.6"

因为这在过去是正确的,所以我假设这是一个新的需求。

键入命令:

sudo pip install pycrypto

我在 Mac 上用 pip安装时遇到了同样的问题。然后我删除了 pycrypto,并重新安装了 easy_install,像这样:

pip uninstall pycrypto
easy_install pycrypto

也正如 Luke 所说: 如果运行这些命令有困难,一定要以 admin (sudo)的方式运行它们

希望这个能帮上忙!

编辑: 正如温克勒正确地指出上面,加密不再安全。改用加密穹顶,它是一个插入式替代品

在 Mac 上... 如果你碰到这个. . 试试看能不能导入加密代替?

如果是这样的话。.包的名称是问题 C与问题 c。解决这个问题。.只要把这些行添加到脚本的顶部。

import crypto
import sys
sys.modules['Crypto'] = crypto

您知道应该能够成功地导入 parmiko。

如果您正在使用 RedHat 或基于 RedHat 的发行版,如 Fedora 或 CentOS,您可以使用以下命令安装它:

sudo yum install pycrypto

在我的情况下,我无法使用 pip安装它。

自从在 OSX 10.8.5(Mountain Lion)上使用 GoogleAppEngineLauncher (版本 > 1.8.X)和 GAE Boilerplate 之后,我也遇到过同样的问题 'ImportError: No module named Crypto.Cipher'。在具有 python 2.7运行时的 Google App Engine SDK 中,pyCrypto 2.6是建议的版本。 对我有效的解决办法是..。

1)下载 pycryp2.6源代码解压(~/Downloads/pycrypto26)

例如,git 克隆 https://github.com/dlitz/pycrypto.git

2) cd(cd ~/Downloads/pycrypto26)

3)在前一个文件夹中执行以下终端命令,以便手动在 GAE 文件夹中安装 pyCrypto 2.6。

sudo python setup.py install --install-lib /Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine

视窗7:

我通过这个错误“模块错误加密。密码导入 AES”

要在 Windows 中安装 Pycrypto,

在命令提示符中尝试此操作,

Set path = C: Python27脚本(即 easy _ install 所在的路径)

然后执行以下步骤,

Easy _ install pycrypto

对于 Ubuntu:

试试这个,

从“ https://pypi.python.org/pypi/pycrypto”下载加密码

然后使用终端将当前路径更改为下载路径:

例如: root@xyz-Virtual-machine: ~/pycrypto-2.6.1 #

然后使用终端执行以下操作:

Python setup.py 安装

这对我有用,希望对所有人都有用。

我通过把第一个字母大小写改为大写来解决这个问题。 确保“从加密。密码导入 AES”不是“从加密。密码导入 AES”。

我找到了解决方案。 问题可能在于大小写敏感性(在 Windows 上)。

只需更改文件夹的名称:

C:\Python27\Lib\site-packages\crypto

这样说:

C:\Python27\Lib\site-packages\Crypto

这就是安装 pycrypto 后文件夹的命名方式: enter image description here

我改成了: enter image description here

现在,下面的代码工作正常: enter image description here

我在 Mac 上也遇到过这种情况,这似乎与通过 pip 在 pycrypto 旁边安装了一个名称类似的“ crypto”模块(不知道这是用来干什么的)有关。

解决办法似乎是用 pip 去掉加密和加密:

sudo pip uninstall crypto
sudo pip uninstall pycrypto

并重新安装加密软件:

sudo pip install pycrypto

现在,当我执行以下操作时,它会像预期的那样工作:

from Crypto.Cipher import AES

这个问题可以通过安装 C + + 编译器(python27或 python26)来解决。从 Microsoft https://www.microsoft.com/en-us/download/details.aspx?id=44266下载并重新运行命令: pip install pycrypto,以便在终止 easy_install.exe进程时运行 gui web 访问。

试试 Pip3:

sudo pip3 install pycrypto

卸载 cryptopycrypto对我有效。然后只安装 pycrypto:

pip uninstall crypto
pip uninstall pycrypto
pip install pycrypto

这可能是加载通过 pip 安装的 python 模块的问题。参考这个答案 不能从站点包目录通过 pip 加载安装的 Python 模块并尝试类似

python -m pip install pycrypto

对于 CentOS 7.4,我首先安装 pip,然后使用 pip 安装 pycrypto:

> sudo yum -y install python-pip
> sudo python -m pip install pycrypto

适合我(Ubuntu 17.10)

删除 venv 并用 python v3.6重新创建它

pip3 install PyJWT
sudo apt-get install build-essential libgmp3-dev python3-dev
pip3 install cryptography
pip3 install pycryptodome
pip3 install pycryptodomex

Pycrypto 已被废弃,有问题,使用 Pycrypdoome

到目前为止,我在导入 from Crypto.Cipher import AES时遇到了同样的问题,即使我已经安装/重新安装了几次 pycrypto。最后是因为 pip 默认为 python3。

~ pip --version
pip 18.0 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)

使用 pip2安装 pycrypto 应该可以解决这个问题。

也许你应该把它添加到你的 requirements.txt文件中:

pycryptodome==3.6.1

然后使用以下方法安装所有依赖项:

pip install -r requirements.txt

这应该可以消除错误报告。它对我起作用了!

如果您使用的是 Mac OS,请重命名 lib 文件夹:

lib/python3.7/site-packages/crypto

这样说:

lib/python3.7/site-packages/Crypto

我使用的是 Python 3.7。在尝试安装 crypto之后,问题仍然存在。

在我的例子中,pycrypto就失败了,所以最后我的构建通过使用以下软件包通过了:

pip install pycryptodome

警告: 不要再使用 cryptopycrypto了!

正如你在 这一页上读到的,使用 pycrypto没有安全的了:

Pycrypto 容易受到 block _ templace.c 中 ALGnew 函数中基于堆的缓冲区溢出的影响。它允许远程攻击者在 python 应用程序中执行任意代码。它的编号是 CVE-2013-7459

Pycrypto 没有对该漏洞发布任何补丁,自2014年6月20日以来也没有对该项目进行任何提交。

更新2021-01-18

CVE 现在已经修好了(谢谢@SumitBadsara 指出来!).您可以在 Debian 安全跟踪程序中找到每个软件包的开放安全许可证的当前状态:

改用 Python 3的 pycryptodome

确保首先卸载所有版本的 cryptopycrypto,然后安装 pycryptodome:

pip3 uninstall crypto
pip3 uninstall pycrypto
pip3 install pycryptodome

所有这三个包都被安装到同一个文件夹,名为 Crypto。在相同的文件夹名下安装不同的包可能是错误的常见来源!

有关更多信息,请参见 Pycryptodome.org

最佳实践: 虚拟环境

为了避免不同版本的 pip 软件包或安装在同一文件夹(即 pycryptopycryptodome)下的软件包出现问题,可以使用所谓的 虚拟环境。在那里,可以为每个单独的项目管理安装的 pip 包。

要安装虚拟环境并安装所有设置,请使用以下命令:

# install python3 and pip3
sudo apt update
sudo apt upgrade
sudo apt install python3
sudo apt install python3-pip


# install virtualenv
pip3 install virtualenv


# install and create a virtual environment in your target folder
mkdir target_folder
cd target_folder
python3 -m virtualenv .


# now activate your venv and install pycryptodome
source bin/activate
pip3 install pycryptodome


# check if everything worked:
# start the interactive python console and import the Crypto module
# when there is no import error then it worked
python
>>> from Crypto.Cipher import AES
>>> exit()


# don't forget to deactivate your venv again
deactivate

有关更多信息,请参见 Docs.python-guide.org

这可能看起来很奇怪,但是在安装了 pycryptopycryptodome之后,我们需要在 lib/site-packages中将目录名 crypto更新为 Crypto

参考

这招对我很管用

pip install pycryptodome==3.4.3

如果您在 Python 3中使用这个模块,并且在导入时遇到了麻烦。 试试这个。

pip uninstall crypto
pip uninstall pycryptodome
pip install pycryptodome

祝你好运!

我遇到了类似的问题,并用下一个命令解决了它

sudo pip3 install py

如果您在卸载 密码隐秘之后仍然遇到这个问题,请再次提醒

pip3 uninstall crypto
pip3 uninstall pycrypto

只需检查在您的站点包下是否有一个名为 密码(小写)的目录 /usr/local/lib/python3.9/site-package ,确保使用的 python 版本和正确的 site-package 路径,然后删除 密码目录,再次尝试安装。

我在 django中也遇到了同样的问题。我在导入时出现了错误:

from Crypto.Cipher import AES

然后我安装了 pycryptodome:

pip install pycryptodome

最后,我将代码更改为:

from crypto.Cipher import AES

即使在安装了 Crypto 之后,我还是出现了以下错误:

python my_script.py
Traceback (most recent call last):
File "D:\gitworkspace\cloudtools\py\my_script.py", line 19, in <module>
from Crypto.Cipher import AES
ModuleNotFoundError: No module named 'Crypto'

然后在这个 邮寄中我找到了解决这个问题的命令。

pip install pycryptodome

不知道这是否会帮助任何人,但我有完全相同的问题,试图运行: samrdump在 Kali Linux。

经过大量的工作(我在回购 给你上检查类似的问题)。 我发现键入 python3而不是 python (就像 python 使用 python2一样)解决了这个问题:

sudo python3 samrdump.py
sudo python3 smbclient.py

我的解决方案似乎很奇怪,但我过去常常这样运行我的文件,

encrypt.py

比我这样运行它,它的工作

python encrypt.py

只需删除您现有的 pycrypto/pycryptodome-3.11.0文件夹位于:

..\Python\Python310\Lib\site-packages

然后跑:

pip install pycryptodome

在终端屏幕上运行以下代码

pip uninstall crypto
pip uninstall pycryptodome
pip install pycryptodome