问题
When I try to run app.py (Python 3.3, PyCrypto 2.6) my virtualenv keeps returning the error listed above. My import statement is just from Crypto.Cipher import AES
. I looked for duplicates and you might say that there are some, but I tried the solutions (although most are not even solutions) and nothing worked.
You can see what the files are like for PyCrypto below:

回答1:
I had the same problem (though on Linux). The solution was quite simple - add:
libraries:
- name: pycrypto
version: "2.6"
to my app.yaml
file. Since this worked correctly in the past, I assume this is a new requirement.
回答2:
I had the same problem on my Mac when installing with pip
. I then removed pycrypto
and installed it again with easy_install
, like this:
pip uninstall pycrypto
easy_install pycrypto
also as Luke commented: If you have trouble running these commands, be sure to run them as admin (sudo)
Hope this helps!
EDIT: As winklerr correctly notes above, pycrypto is no longer safe. Use pycryptodome instead, it is a drop-in replacement
回答3:
I ran into this on Mac as well, and it seems to be related to having an unfortunately similarly named "crypto" module (not sure what that is for) installed alongside of pycrypto via pip.
The fix seems to be removing both crypto and pycrypto with pip:
sudo pip uninstall crypto
sudo pip uninstall pycrypto
and reinstalling pycrypto:
sudo pip install pycrypto
Now it works as expected when I do something like:
from Crypto.Cipher import AES
回答4:
On the mac... if you run into this.. try to see if you can import crypto instead?
If so.. the package name is the issue C
vs c
. To get around this.. just add these lines to the top of your script.
import crypto
import sys
sys.modules['Crypto'] = crypto
You know should be able to import paramiko successfully.
回答5:
type command:
sudo pip install pycrypto
回答6:
Uninstalling crypto
and pycrypto
works on me. Then install only pycrypto
:
pip uninstall crypto
pip uninstall pycrypto
pip install pycrypto
回答7:
I found the solution. Issue is probably in case sensitivity (on Windows).
Just change the name of the folder:
C:\Python27\Lib\site-packages\crypto
- to:
C:\Python27\Lib\site-packages\Crypto
This is how folder was named after installation of pycrypto:
I've changed it to:
And now the following code works fine:
回答8:
if you are using redhat,fedora, centos :
sudo yum install pycrypto
for my case I coouldnot install it using pip
回答9:
I've had the same problem 'ImportError: No module named Crypto.Cipher'
, since using GoogleAppEngineLauncher (version > 1.8.X) with GAE Boilerplate on OSX 10.8.5 (Mountain Lion). In Google App Engine SDK with python 2.7 runtime, pyCrypto 2.6 is the suggested version.
The solution that worked for me was...
1) Download pycrypto2.6 source extract it somewhere(~/Downloads/pycrypto26
)
e.g., git clone https://github.com/dlitz/pycrypto.git
2) cd
(cd ~/Downloads/pycrypto26
) then
3) Execute the following terminal command inside the previous folder in order to install pyCrypto 2.6 manually in GAE folder.
sudo python setup.py install --install-lib /Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine
回答10:
Try with pip3:
sudo pip3 install pycrypto
回答11:
Worked for me (Ubuntu 17.10)
Removing venv and creating it again with 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 is deprecated, had problems with it, used Pycryptodome
回答12:
WARNING: Don't use pycrypto
anymore!
As you can read on this page, the usage of pycrypto
is not safe anymore:
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.
SOLUTION: Use Python3 and pycryptodome
!
TL;DR: pip3 install pycryptodome
Setting up a new virtual environment
To install a virtual environment and setup everything, use the following commands:
# 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
For more information, see pycryptodome.org
回答13:
It could be a problem of loading python modules installed via pip. Refer to this answer Can't load Python modules installed via pip from site-packages directory and try something like
python -m pip install pycrypto
回答14:
For CentOS 7.4 I first installed pip and then pycrypto using pip:
> sudo yum -y install python-pip
> sudo python -m pip install pycrypto
回答15:
If you an macos, rename lib folder lib/python3.7/site-packages/crypto
to lib/python3.7/site-packages/Crypto
回答16:
For Windows 7:
I got through this error "Module error Crypo.Cipher import AES"
To install Pycrypto in Windows,
Try this in Command Prompt,
Set path=C:\Python27\Scripts (i.e path where easy_install is located)
Then execute the following,
easy_install pycrypto
For Ubuntu:
Try this,
Download Pycrypto from "https://pypi.python.org/pypi/pycrypto"
Then change your current path to downloaded path using your terminal:
Eg: root@xyz-virtual-machine:~/pycrypto-2.6.1#
Then execute the following using the terminal:
python setup.py install
It's worked for me. Hope works for all..
回答17:
I solve this problem by change the first letter case to upper. Make sure ''from Crypto.Cipher import AES'' not ''from crypto.Cipher import AES''.
回答18:
This problem can be fixed by installing the C++ compiler (python27 or python26). Download it from Microsoft https://www.microsoft.com/en-us/download/details.aspx?id=44266 and re-run the command : pip install pycrypto
to run the gui web access when you kill the process of easy_install.exe
.
回答19:
To date, I'm having same issue when importing from Crypto.Cipher import AES
even i've installed/reinstalled pycrypto few times. End up it's because pip defaulted to python3.
~ pip --version
pip 18.0 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
installing pycrypo with pip2 should solve this issue.
回答20:
Maybe you should this: pycryptodome==3.6.1 add it to requirements.txt and install, which should eliminate the error report. it works for me!
回答21:
I'm with 3.7. The issue remains after I try to install crypto. And pycrypto just fails in my case. So in the end my build passed via package below: pip install pycryptodome
来源:https://stackoverflow.com/questions/19623267/importerror-no-module-named-crypto-cipher