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

ImportError: No module named Crypto.Cipher

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

您可以在下面查看PyCrypto的文件格式:

>
</p>
<div class=


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

1
2
pip uninstall pycrypto
easy_install pycrypto

就像卢克(Luke)所说:如果您在运行这些命令时遇到麻烦,请确保以admin(sudo)身份运行它们

希望这可以帮助!


我也在Mac上遇到了这个问题,它似乎与通过pip在pycrypto旁边安装了一个不幸的名字相似的" crypto"模块(不确定该使用的是什么)有关。

该修复程序似乎正在通过pip删除crypto和pycrypto:

1
2
sudo pip uninstall crypto
sudo pip uninstall pycrypto

并重新安装pycrypto:

1
sudo pip install pycrypto

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

1
from Crypto.Cipher import AES


我有同样的问题(尽管在Linux上)。解决方案非常简单-添加:

1
2
3
libraries:
- name: pycrypto
  version:"2.6"

到我的app.yaml文件。由于过去该方法正常工作,因此我认为这是一个新要求。


在Mac上...如果遇到此问题,请尝试查看是否可以导入加密货币?

如果是这样..包名称是问题CC。要解决此问题,只需将这些行添加到脚本的顶部。

1
2
3
import crypto
import sys
sys.modules['Crypto'] = crypto

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


输入命令:

1
sudo pip install pycrypto


我找到了解决方案。问题可能是区分大小写(在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


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

1
2
3
pip uninstall crypto
pip uninstall pycrypto
pip install pycrypto


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

<5233>

就我而言,我不会使用pip安装它


我遇到了相同的问题'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)然后cd(cd ~/Downloads/pycrypto26)

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

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


尝试使用pip3:

1
sudo pip3 install pycrypto

加载通过pip安装的python模块可能是一个问题。参考此答案无法从site-packages目录中通过pip加载安装的Python模块,并尝试类似的方法

1
python -m pip install pycrypto

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

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

为我工作(Ubuntu 17.10)

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

1
2
3
4
5
pip3 install PyJWT
sudo apt-get install build-essential libgmp3-dev python3-dev
pip3 install cryptography
pip3 install pycryptodome
pip3 install pycryptodomex

Pycrypto已过时,存在问题,已使用Pycryptodome


警告:不再使用pycrypto

您可以在此页面上阅读,pycrypto的使用不再安全:

Pycrypto is vulnerable to a heap-based buffer overflow in the ALGnew function in block_templace.c. It allows remote attackers to execute arbitrary code in the python application. It was assigned the CVE-2013-7459 number.

Pycrypto didn’t release any fix to that vulnerability and no commit was made to the project since Jun 20, 2014.

解决方案:使用Python3和pycryptodome

TL; DR:pip3 install pycryptodome

设置新的虚拟环境

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# install python3 and pip3
sudo apt update
sudo apt upgrade
sudo apt install python3
sudo apt install python3-pip

# install and create a virtual environment
# cd to or mkdir the folder where you want your venv
pip3 install virtualenv
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。


我通过将首字母大写更改为大写来解决此问题。
确保"从Crypto.Cipher导入AES"而不是"从crypto.Cipher导入AES"。


对于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安装

对我有用。希望为所有人服务。


到目前为止,即使我已经安装/重新安装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应该可以解决此问题。


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


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


可以通过安装C ++编译器(python27或python26)来解决此问题。从Microsoft https://www.microsoft.com/zh-cn/download/details.aspx?id=44266下载并重新运行命令:pip install pycrypto,以在杀死< X14>。


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