Python ImportError:没有名为Crypto.Cipher的模块
当我尝试运行app.py(python3.3,PyCrypto 2.6)时,我的virtualenv会不断返回上面列出的错误。我的import语句只是来自Crypto.Cipher import AES的Python ImportError:没有名为Crypto.Cipher的模块,python,virtualenv,pip,easy-install,pycrypto,Python,Virtualenv,Pip,Easy Install,Pycrypto,当我尝试运行app.py(python3.3,PyCrypto 2.6)时,我的virtualenv会不断返回上面列出的错误。我的import语句只是来自Crypto.Cipher import AES的。我寻找了重复的,你可能会说有一些,但我尝试了解决方案(尽管大多数甚至不是解决方案),但没有任何效果 您可以在下面看到PyCrypto的文件: 我也有同样的问题(尽管是在Linux上)。解决方案非常简单-添加: libraries: - name: pycrypto version: "2.
。我寻找了重复的,你可能会说有一些,但我尝试了解决方案(尽管大多数甚至不是解决方案),但没有任何效果
您可以在下面看到PyCrypto的文件:
我也有同样的问题(尽管是在Linux上)。解决方案非常简单-添加:
libraries:
- name: pycrypto
version: "2.6"
到我的app.yaml
文件。由于这在过去工作正常,我认为这是一个新的要求。键入命令:
sudo pip install pycrypto
使用pip
进行安装时,我的Mac电脑也遇到了同样的问题。然后我删除了pycrypto
,并使用easy\u install
再次安装了它,如下所示:
pip uninstall pycrypto
easy_install pycrypto
正如Luke所评论的:如果您在运行这些命令时遇到问题,请确保以admin(sudo)的身份运行它们
希望这有帮助
编辑:正如文克尔在上面正确指出的,pycrypto不再安全。请改用pycryptodome,它是mac上的一个替代品。。。如果你遇到这个。。尝试看看是否可以导入加密
如果是的话。。包名称是问题C
vsC
。为了避开这个。。只需将这些行添加到脚本的顶部
import crypto
import sys
sys.modules['Crypto'] = crypto
您知道应该能够成功导入paramiko。如果您使用的是redhat、fedora、centos:
sudo yum安装pycrypto
就我的情况而言,我不能使用pip安装它,因为在OSX 10.8.5(Mountain Lion)上使用GoogleAppEngineLauncher(版本>1.8.X)和GAE样板文件,所以我遇到了相同的问题。在使用python 2.7运行时的Google App Engine SDK中,pyCrypto 2.6是建议的版本。
对我有效的解决方案是
1) 下载pycrypto2.6源代码并在某处提取它(~/Downloads/pycrypto26
)
e、 g.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
适用于Windows 7:
我通过了这个错误“模块错误Crypo.Cipher导入AES”
要在Windows中安装Pycrypto
在命令提示符中尝试此操作
设置路径=C:\Python27\Scripts(即easy\u install所在的路径)
然后执行以下命令:
轻松安装pycrypto
对于Ubuntu:
试试这个
从“”下载Pycrypto
然后使用终端将当前路径更改为下载路径:
例如:root@xyz-虚拟机:~/pycrypto-2.6.1#
然后使用终端执行以下操作:
python setup.py安装
这对我有用。希望适用于所有人。我通过将第一个字母的大小写改为大写来解决这个问题。
确保“从加密密码导入AES”不是“从加密密码导入AES”。我找到了解决方案。问题可能是大小写敏感(在Windows上)
只需更改文件夹的名称:
C:\Python27\Lib\site packages\crypto
- 收件人:
C:\Python27\Lib\site packages\Crypto
这是安装pycrypto后文件夹的命名方式:
我已将其更改为:
现在以下代码可以正常工作:
我在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
<>这个问题可以通过安装C++编译器(Python 27或Python 26)来修复。从Microsoft下载并重新运行命令:pip install pycrypto
以在终止easy\u install.exe的进程时运行gui web访问
sudo pip3 install pycrypto
卸载crypto
和pycrypto
对我有效。然后仅安装pycrypto
:
pip uninstall crypto
pip uninstall pycrypto
pip install pycrypto
加载通过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已弃用,有问题,使用Pycryptodome到目前为止,我在从Crypto导入时遇到了相同的问题。即使我已经安装/重新安装了几次Pycrypto,Cipher import AES
。最后,这是因为pip默认使用python3
~ pip --version
pip 18.0 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
使用pip2安装pycrypto可以解决此问题。也许您应该:
pycryptodome==3.6.1
将其添加到requirements.txt并安装,这将消除错误报告。
这对我有用 如果您使用macos,请将lib文件夹lib/python3.7/site packages/crypto
重命名为lib/python3.7/site packages/crypto
我支持3.7。在我尝试安装crypto之后,问题仍然存在。而pycrypto在我的情况下失败了。因此,最终我的构建通过以下包传递:
pip安装pycryptodome警告:不要再使用crypto
或pycrypto
!
如您所知,pycrypto
的使用不再安全:
Pycrypto易受block_templace.c中ALGnew函数中基于堆的缓冲区溢出的攻击。它允许远程攻击者在python应用程序中执行任意代码。它被分配了号码
Pycrypto没有发布该漏洞的任何修复程序,自2014年6月20日以来,也没有对该项目做出任何承诺
更新2021-01-18:CVE现在已修复(感谢@SumitBadsara提供pointin
pip3 uninstall crypto
pip3 uninstall pycrypto
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
pip install pycryptodome==3.4.3
pip uninstall crypto
pip uninstall pycryptodome
pip install pycryptodome
pip3 uninstall crypto
pip3 uninstall pycrypto