当我尝试运行app.py(Python 3.3,PyCrypto 2.6)时,我的virtualenv会一直返回上面列出的错误。我的import语句只是from Crypto.Cipher import AES
。我寻找重复项,你可能会说有一些,但我尝试了解决方案(尽管大多数都不是解决方案)并且没有任何效果。
您可以在下面看到PyCrypto的文件:
答案 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
C:\Python27\Lib\site-packages\Crypto
答案 6 :(得分:13)
卸载crypto
和pycrypto
对我有用。然后只安装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)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
答案 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日以来未发布针对该漏洞的任何修复程序,也没有对该项目进行任何提交。
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)
如果您在卸载crypto和pycrypto后仍然遇到此问题,请再次提醒
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)
这看起来可能很奇怪,但是在安装pycrypto
或pycryptodome
之后,我们需要将crypto
中的目录名Crypto
更新为lib/site-packages
答案 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)