热门标签:
Q:

ImportError:没有名为Crypto的模块。密码,密码

当我尝试运行app.py (Python3.3,PyCrypto2.6)我的virtualenv不断返回上面列出的错误。 我的导入语句只是from Crypto.Cipher import AES。 我寻找重复项,你可能会说有一些,但我尝试了解决方案(尽管大多数甚至不是解决方案),没有任何工作。

您可以在下面看到PyCrypto的文件是什么样的:

src=

原网址
A:

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

pip uninstall pycrypto
easy_install pycrypto

另外正如Luke评论的那样:如果您在运行这些命令时遇到问题,请务必以admin(sudo)身份运行它们

希望这有帮助!

编辑:正如winklerr在上面正确指出的那样,pycrypto不再安全。 使用pycryptodome代替,它是一个下拉式替代品

所有回答

共 29 条

author avatar

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

修复似乎正在使用pip删除crypto和pycrypto:

sudo pip uninstall crypto
sudo pip uninstall pycrypto

并重新安装pycrypto:

sudo pip install pycrypto

现在,当我做类似的事情时,它按预期工作:

from Crypto.Cipher import AES
author avatar

警告:不要再使用cryptopycrypto

正如您在本页上所看到的,pycrypto的用法是不再是安全的:

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

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

更新2021-01-18

CVE现在已经修复了(感谢@SumitBadsara指出它!). 您可以在Debian安全跟踪器上找到每个软件包的开放安全票的当前状态:

改用Python3的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.

author avatar

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

libraries:
- name: pycrypto
  version: "2.6"

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

author avatar

我找到了解决方案。问题可能是区分大小写(在Windows上)。

只需更改文件夹的名称:

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

这就是安装pycrypto后文件夹的命名方式: 在这里输入图像描述在这里输入图像描述<img alt="在这里输入图像描述"src="https://i.stack.imgur.com/iirOc.png缧/>

author avatar

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

如果是的话。. 包名称是issueCvsc。 绕过这个。. 只需将这些行添加到脚本的顶部即可。

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

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

author avatar

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

pip uninstall crypto 
pip uninstall pycrypto 
pip install pycrypto
author avatar

类型命令:

sudo pip install pycrypto
author avatar

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

author avatar

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

sudo yum install pycrypto

对于我的情况,我coouldnot使用pip安装它

author avatar

我有同样的问题'ImportError: No module named Crypto.Cipher',因为使用GoogleAppEngineLauncher(版本>1.8。X)与OSX10.8.5(山狮)上的GAE样板。 在带有python2.7运行时的Google App Engine SDK中,pyCrypto2.6是建议的版本。 对我有效的解决方案是。..

1)下载pycrypto2.6源码解压到某处(~/Downloads/pycrypto26)

例如git clonehttps://github.com/dlitz/pycrypto.git

2) cd (cd ~/Downloads/pycrypto26) 然后

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

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

这可能看起来很奇怪,但是在安装pycryptopycryptodome之后,我们需要在lib/site-packages

中将目录名称lib/site-packages更新为lib/site-packages

参考

author avatar

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

pip uninstall crypto
pip uninstall pycryptodome
pip install pycryptodome

祝你好运!

author avatar

这可能是加载通过pip安装的python模块的问题。 参考这个答案Can't load Python modules installed via pip from site-packages directoryand try something like

python -m pip install pycrypto
author avatar

为我工作(Ubuntu17.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

author avatar

这对我有用

pip install pycryptodome==3.4.3
author avatar

我通过将第一个字母大小写更改为upper来解决这个问题。 确保"从加密。密码从加密中导入AES"不是"。密码导入AES"。

author avatar

试试pip3

sudo pip3 install pycrypto
author avatar

对于CentOS7.4,我首先安装了pip,然后使用pip安装了pycrypto:

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

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

author avatar

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

pip3 uninstall crypto
pip3 uninstall pycrypto

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

author avatar

对于Windows7:

我通过这个错误得到了"模块错误"。密码导入AES"

在Windows中安装Pycrypto,

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

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

然后执行以下操作,

easy_install pycrypto

对于Ubuntu:

试试这个,

从"下载Pycrypto https://pypi.python.org/pypi/pycrypto"

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

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

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

pythonsetup.py 安装/安装

这对我很管用。 希望对所有人都有效。.

author avatar

这个问题可以通过安装C++编译器(python27或python26)来解决。 从微软下载https://www.microsoft.com/en-us/download/details.aspx?id=44266并重新运行命令:pip install pycrypto以在杀死easy_install.exe

author avatar

也许你应该这样做: pycryptodome==3.6.1 将其添加到需求中。txt和安装,这应该消除错误报告。 这对我管用!

author avatar

只需删除位于的pycrpto/pycryptodome-3.11.0现有文件夹即可。.\Python\Python310\Lib\site-packages(如果有的话。.),然后运行pip install pycryptodome

author avatar

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

author avatar

我有simular问题,并用下一个命令修复它

sudo pip3 install py
author avatar

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

来自加密。密码导入AES

然后我安装了pycryptodome和 行以下使用并将资本C改为小c

来自加密。密码导入AES

author avatar

即使在安装加密后,我也得到了以下错误

> 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

author avatar

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

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

sudo python3 samrdump.py
sudo python3 smbclient.py

相似问题