ImportError:没有名为Crypto.Cipher的模块

时间:2013-10-27 20:39:10

标签: python virtualenv pip easy-install pycrypto

当我尝试运行app.py(Python 3.3,PyCrypto 2.6)时,我的virtualenv会一直返回上面列出的错误。我的import语句只是from Crypto.Cipher import AES。我寻找重复项,你可能会说有一些,但我尝试了解决方案(尽管大多数都不是解决方案)并且没有任何效果。

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

30 个答案:

答案 0 :(得分:171)

使用pip安装时,我在Mac上遇到了同样的问题。然后我删除了pycrypto并再次使用easy_install安装了它,如下所示:

pip uninstall pycrypto
easy_install pycrypto

也正如Luke所评论的:如果您在运行这些命令时遇到问题,请确保以管理员身份运行它们(sudo)

希望这有帮助!

答案 1 :(得分:90)

我也在Mac上遇到了这个问题,这似乎与一个不幸的是同样命名的“加密”模块(不知道是什么用)通过pip安装在pycrypto旁边有关。

修复似乎是用pip删除了crypto和pycrypto:

sudo pip uninstall crypto
sudo pip uninstall pycrypto

并重新安装pycrypto:

sudo pip install pycrypto

现在,当我执行以下操作时,它会按预期工作:

from Crypto.Cipher import AES

答案 2 :(得分:54)

我遇到了同样的问题(虽然在Linux上)。解决方案非常简单 - 添加:

libraries:
- name: pycrypto
  version: "2.6"

到我的app.yaml文件。由于这在过去是正常的,我认为这是一项新要求。​​

答案 3 :(得分:29)

在Mac上...如果遇到这个......试着看看你是否可以导入加密?

如果是这样..包名称是问题C vs c。要解决这个问题,只需将这些行添加到脚本的顶部即可。

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

你知道应该能够成功导入paramiko。

答案 4 :(得分:17)

键入命令:

sudo pip install pycrypto

答案 5 :(得分:15)

我找到了解决方案。问题可能是灵敏度(在Windows上)。

只需更改文件夹的名称:

  • C:\Python27\Lib\site-packages\crypto
  • to:C:\Python27\Lib\site-packages\Crypto

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

我已将其更改为: enter image description here

现在,以下代码正常运行: enter image description here

答案 6 :(得分:13)

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

pip uninstall crypto 
pip uninstall pycrypto 
pip install pycrypto

答案 7 :(得分:8)

我遇到了同样的问题'ImportError: No module named Crypto.Cipher',因为在OSX 10.8.5(Mountain Lion)上使用了GoogleAppEngineLauncher(版本> 1.8.X)和GAE Boilerplate。在使用python 2.7运行时的Google App Engine SDK中,pyCrypto 2.6是建议的版本。 对我有用的解决方案是......

1)下载pycrypto2.6源提取它(~/Downloads/pycrypto26

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

2)cdcd ~/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

答案 8 :(得分:8)

如果您使用的是redhat,fedora,centos:

sudo yum install pycrypto

对于我的情况,我不能使用pip

安装它

答案 9 :(得分:5)

警告:请勿再使用pycrypto

正如您在this page上所读的,pycrypto的使用不再不安全

  

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

     

Pycrypto自2014年6月20日以来未发布针对该漏洞的任何修复程序,也没有对该项目进行任何提交。

解决方案:使用Python3和pycryptodome

TL; DR: pip3 install pycryptodome

设置新的虚拟环境

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

# 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

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

答案 10 :(得分:4)

如果您将此模块与Python3一起使用,并且在导入时遇到问题。 试试这个。

pip uninstall crypto
pip uninstall pycryptodome
pip install pycryptodome

祝你好运!

答案 11 :(得分:3)

这对我有用

pip install pycryptodome==3.4.3

答案 12 :(得分:3)

尝试 pip3

sudo pip3 install pycrypto

答案 13 :(得分:2)

这可能是加载通过pip安装的python模块的问题。请参阅此答案Can't load Python modules installed via pip from site-packages directory并尝试类似

的内容
python -m pip install pycrypto

答案 14 :(得分:2)

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

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

答案 15 :(得分:1)

如果您在卸载cryptopycrypto后仍然遇到此问题,请再次提醒

pip3 uninstall crypto
pip3 uninstall pycrypto

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

答案 16 :(得分:1)

为我工作(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已弃用,有问题,使用了Pycryptodome

答案 17 :(得分:1)

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

Reference

答案 18 :(得分:1)

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

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

使用pip2安装pycrypo应该可以解决此问题。

答案 19 :(得分:1)

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

答案 20 :(得分:1)

我通过将第一个字母大小写改为upper来解决这个问题。 确保''来自Crypto.Cipher导入AES''不'来自crypto.Cipher导入AES''。

答案 21 :(得分:1)

对于Windows 7:

我遇到了这个错误"模块错误Crypo.Cipher导入AES"

在Windows中安装Pycrypto,

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

设置路径= C:\ Python27 \ Scripts(即easy_install所在的路径)

然后执行以下操作,

easy_install pycrypto

对于Ubuntu:

试试这个,

从" https://pypi.python.org/pypi/pycrypto"

下载Pycrypto

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

例如:root @ xyz-virtual-machine:〜/ pycrypto-2.6.1#

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

python setup.py install

它为我工作。希望适用于所有人..

答案 22 :(得分:0)

如果您是macOS,请将lib文件夹lib/python3.7/site-packages/crypto重命名为lib/python3.7/site-packages/Crypto

答案 23 :(得分:0)

我使用3.7。在我尝试安装加密货币后,问题仍然存在。在我的情况下,pycrypto只是失败了。所以最后我的构建通过下面的包传递: pip安装pycryptodome

答案 24 :(得分:0)

也许您应该这样做: pycryptodome == 3.6.1 将其添加到requirements.txt并安装,这将消除错误报告。 它对我有用!

答案 25 :(得分:0)

我遇到了类似问题,并使用下一条命令对其进行了修复

allowCancelAndLogErrorsHandler

答案 26 :(得分:0)

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

从 Crypto.Cipher 导入 AES

然后我安装了 pycryptodome 和 在下面使用并将大写 C 更改为小 c

从crypto.Cipher 导入AES

答案 27 :(得分:0)

即使在安装 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'

然后在 post 中,我发现以下命令解决了这个问题。
pip install pycryptodome

答案 28 :(得分:0)

不确定这是否会帮助任何人,但我在尝试在 Kali Linux 上运行时遇到了完全相同的问题:samrdump

经过大量工作(我在 repo here 上检查了类似问题)。 我发现输入 python3 而不是 python(因为 python 使用 python2)解决了这个问题:

sudo python3 samrdump.py
sudo python3 smbclient.py

答案 29 :(得分:-1)

答案很简单,只做一件事我一直在寻找 4 天但找不到答案,我找到了解决方案,只需将 crypto 文件夹重命名为 Crypto(使C大写)enter image description here