Wanneer ik app.py probeer (Python 3.3, Pycrypto 2.6), blijft mijn virtualenv de hierboven vermelde fout terug. Mijn importinstructie is gewoon from Crypto.Cipher import AES
. Ik zocht naar duplicaten en je zou kunnen zeggen dat er wat zijn, maar ik heb de oplossingen geprobeerd (hoewel de meeste niet eens oplossingen zijn) en niets werkte.
U kunt zien hoe de bestanden zijn voor Pycrypto hieronder:
1, Autoriteit 100%
Ik had hetzelfde probleem (hoewel op Linux). De oplossing was vrij eenvoudig – voeg toe:
libraries:
- name: pycrypto
version: "2.6"
Naar mijn app.yaml
bestand. Omdat dit in het verleden correct werkte, neem ik aan dat dit een nieuwe vereiste is.
2, Autoriteit 294%
Ik had hetzelfde probleem op mijn Mac bij het installeren met pip
. Ik verwijderde vervolgens pycrypto
en installeerde het opnieuw met easy_install
, zoals deze:
pip uninstall pycrypto
easy_install pycrypto
Ook als Luke commentaar: Als u problemen ondervindt, moet u deze uitvoeren als admin (sudo)
Ik hoop dat dit helpt!
EDIT: als Winklerr correct noteert, is Pycrypto niet langer veilig. Gebruik in plaats daarvan pycryptodome, het is een drop-in vervanging
3, Autoriteit 156%
Ik heb dit ook op Mac gestuurd en het lijkt te hebben gerelateerd aan het hebben van helaas vergelijkbaar met de naam “Crypto” -module (niet zeker waarvoor dat is) naast Pycrypto via PIP.
De fix lijkt zowel Crypto als Pycrypto met PIP te verwijderen:
sudo pip uninstall crypto
sudo pip uninstall pycrypto
en pycrypto opnieuw installeren:
sudo pip install pycrypto
Nu werkt het zoals verwacht als ik iets doe als:
from Crypto.Cipher import AES
Antwoord 4, autoriteit 96%
WAARSCHUWING: gebruik Crypto
of pycrypto
niet meer!
Zoals u kunt lezen op deze pagina, is het gebruik van pycrypto
is nietmeer veilig:
Pycrypto is kwetsbaar voor een op heap gebaseerde bufferoverloop in de ALGnew-functie in block_tempplace.c. Het stelt aanvallers op afstand in staat om willekeurige code uit te voeren in de python-applicatie. Het kreeg het CVE-2013-7459-nummer toegewezen.
Pycrypto heeft geen oplossing voor die kwetsbaarheid vrijgegeven en er is sinds 20 juni 2014 geen toezegging gedaan aan het project.
Update 18-01-2021
De CVE is nu opgelost (bedankt @SumitBadsara voor het erop wijzen!). U kunt de huidige status van de openstaande beveiligingstickets voor elk pakket vinden op de Debian-beveiligingstracker:
Gebruik in plaats daarvan pycryptodome
van Python3!
Zorg ervoor dat u eerst alle versies van Crypto
en pycrypto
verwijdert en installeer vervolgens pycryptodome
:
pip3 uninstall crypto
pip3 uninstall pycrypto
pip3 install pycryptodome
Al deze drie pakketten worden geïnstalleerd in dezelfde map, genaamd Crypto
. Het installeren van verschillende pakketten onder dezelfde mapnaam kan een veelvoorkomende bron van fouten zijn!
Voor meer informatie, zie pycryptodome.org.
Best practice: virtuele omgevingen
Om problemen te voorkomen met pip-pakketten in verschillende versies of pakketten die in dezelfde map worden geïnstalleerd (bijv. pycrypto
en pycryptodome
), kunt u gebruik maken van een zogenaamde virtuele omgeving. Daar kunnen de geïnstalleerde pip-pakketten voor elk afzonderlijk project afzonderlijk worden beheerd.
Gebruik de volgende opdrachten om een virtuele omgeving te installeren en alles in te stellen:
# 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
Zie voor meer informatie docs.python-guide.org.
Antwoord 5, autoriteit 49%
Op de mac… als je dit tegenkomt… probeer dan eens of je in plaats daarvan crypto kunt importeren?
Zo ja… de pakketnaam is het probleem c
vs c
. Om dit te omzeilen… voeg je deze regels toe aan de bovenkant van je script.
import crypto
import sys
sys.modules['Crypto'] = crypto
Je weet dat je paramiko met succes moet kunnen importeren.
Antwoord 6, autoriteit 47%
Ik heb de oplossing gevonden.Probleem ligt waarschijnlijk in hoofdlettergevoeligheid (op Windows).
Verander gewoon de naam van de map:
C:\Python27\Lib\site-packages\Crypto
- naar:
C:\Python27\Lib\site-packages\Crypto
Zo is de map genoemd naar de installatie van pycrypto:
En nu werkt de volgende code prima:
Antwoord 7, autoriteit 37%
Het verwijderen van Crypto
en pycrypto
werkt bij mij. Installeer dan alleen pycrypto
:
pip uninstall crypto
pip uninstall pycrypto
pip install pycrypto
Antwoord 8, autoriteit 31%
typ commando:
sudo pip install pycrypto
9, Autoriteit 11%
Als u Redhat, Fedora, CentOS:
gebruikt
sudo yum install pycrypto
Voor mijn zaak, installeer ik het installeren met PIP
10, Autoriteit 11%
Als u een MacOS, hernoem lib-map lib/python3.7/site-packages/crypto
naar lib/python3.7/site-packages/crypto
11, Autoriteit 9%
Als u deze module gebruikt met Python3 en problemen hebben met import.
Probeer dit.
pip uninstall crypto
pip uninstall pycryptodome
pip install pycryptodome
Veel succes!
12, Autoriteit 6%
Het kan een probleem zijn bij het laden van python-modules die via pip zijn geïnstalleerd. Raadpleeg dit antwoord Kan Python-modules niet laden geïnstalleerd via pip uit de map site-packagesen probeer zoiets als
python -m pip install pycrypto
Antwoord 13, autoriteit 6%
Werkte voor mij (Ubuntu 17.10)
Venv verwijderen en opnieuw maken met 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 verouderd, had er problemen mee, gebruikte Pycryptodome
Antwoord 14, autoriteit 6%
Dit werkte voor mij
pip install pycryptodome==3.4.3
Antwoord 15, autoriteit 4%
Ik los dit probleem op door de eerste letter naar boven te veranderen.
Zorg ervoor dat ”from Crypto.Cipher import AES” niet ”from crypto.Cipher import AES”.
Antwoord 16, autoriteit 4%
Probeer met pip3:
sudo pip3 install pycrypto
Antwoord 17, autoriteit 4%
Dit lijkt misschien raar, maar na het installeren van pycrypto
of pycryptodome
, moeten we de directorynaam Crypto
bijwerken naar Crypto
in lib/site-packages
Antwoord 18, autoriteit 3%
Voor CentOS 7.4 installeerde ik eerst pip en daarna pycrypto met pip:
> sudo yum -y install python-pip
> sudo python -m pip install pycrypto
Antwoord 19, autoriteit 3%
Tot op heden heb ik hetzelfde probleem bij het importeren van from Crypto.Cipher import AES
zelfs als ik pycrypto een paar keer heb geïnstalleerd/opnieuw geïnstalleerd. Uiteindelijk is het omdat pip standaard ingesteld is op python3.
~ pip --version
pip 18.0 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
het installeren van pycrypto met pip2 zou dit probleem moeten oplossen.
Antwoord 20
Voor Windows 7:
Ik heb deze fout “Modulefout Crypo.Cipher import AES” doorstaan
Om Pycrypto in Windows te installeren,
Probeer dit in de opdrachtprompt,
Set path=C:\Python27\Scripts (d.w.z. het pad waar easy_install zich bevindt)
Voer dan het volgende uit,
easy_install pycrypto
Voor Ubuntu:
Probeer dit,
Pycrypto downloaden van “https://pypi.python.org/pypi/pycrypto”
Verander vervolgens uw huidige pad in een gedownload pad met uw terminal:
Bijvoorbeeld: [email protected]:~/pycrypto-2.6.1#
Voer vervolgens het volgende uit met behulp van de terminal:
python setup.py installeren
Het heeft voor mij gewerkt. Hoop werkt voor iedereen..
Antwoord 21
Dit probleem kan worden verholpen door de C++-compiler (python27 of python26) te installeren. Download het van Microsoft https://www.microsoft.com/ en-us/download/details.aspx?id=44266en voer het commando : pip install pycrypto
opnieuw uit om de gui-webtoegang uit te voeren wanneer u het proces van easy_install.exe
.
Antwoord 22
Misschien moet je dit doen:
pycryptodome==3.6.1
voeg het toe aan requirements.txt en installeer, wat het foutenrapport zou moeten elimineren.
het werkt voor mij!
Antwoord 23
Nog een herinnering als je dit probleem nog steeds tegenkomt nadat je cryptoen pycryptoop deze manier hebt verwijderd
pip3 uninstall crypto
pip3 uninstall pycrypto
Controleer of er een map is met de naam crypto(kleine letters) in uw sitepakketten onder
/usr/local/lib/python3.9/site-packages, zorg ervoor dat de python-versie die je hebt gebruikt en het juiste site-packages-pad, verwijder vervolgens de crypto-directory, probeer opnieuw te installeren.
Antwoord 24
Ik ben met 3.7. Het probleem blijft bestaan nadat ik crypto probeer te installeren. En pycrypto faalt gewoon in mijn geval. Dus uiteindelijk is mijn build geslaagd via onderstaand pakket:
pip installeer pycryptodome
Antwoord 25
Ik had een soortgelijk probleem en loste het op met het volgende commando
sudo pip3 install py
Antwoord 26
Ik had hetzelfde probleem in django. Ik kreeg een foutmelding tijdens het importeren:
van Crypto.Cipher AES importeren
toen installeerde ik pycryptodome en
gebruikt onder de lijn en veranderde hoofdletter C in kleine c
van crypto.Cipher import AES
Antwoord 27
Zelfs na het installeren van Crypto was ik onder de foutmelding
> 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'
Dan in de post Ik heb hieronder opdracht gevonden die dit heeft opgelost probleem.
pip install pycryptodome
28
Het antwoord is eenvoudig, gewoon één ding dat ik 4 dagen heb gezocht, maar kon het antwoord niet vinden en ik vond een oplossing die net het crypto map naar Crypto (Make heeft gevonden C Capital)