ImportError: Nenhum módulo denominado Crypto.Cipher
Quando tento executar app.py (Python 3.3, PyCrypto 2.6), meu virtualenv continua retornando o erro listado acima. Minha declaração de importação é justa from Crypto.Cipher import AES. Procurei duplicatas e você pode dizer que existem, mas tentei as soluções (embora a maioria nem sejam soluções) e nada funcionou.
Você pode ver como são os arquivos do PyCrypto abaixo:
python virtualenv pip easy-install pycrypto
Parece que você está em um virtualenv. Seu virtualenv está ativado corretamente?
@ChristianTernus Ele está ativado corretamente.
Eu tive o mesmo problema. Isso vai soar um pouco chato, mas para resolver isso apenas parei de usar o OSX, instalei o VirtualBox e uma distro Linux e tudo funcionou :)
Espere o que? ImportErroré mostrado em python 2enquanto python 3nele está ModuleNotFoundError.
— Black Thunder
@BlackThunder, python3 -c 'import foo'produz ImportError: No module named 'foo'. Perdi alguma coisa?
Eu tive o mesmo problema (embora no Linux). A solução era bastante simples - adicione:
ao meu app.yamlarquivo. Como isso funcionou corretamente no passado, presumo que seja um novo requisito.
— Patrick Jordan
Só para adicionar um pouco mais a isso, no meu caso isso não estava funcionando porque eu tinha várias versões de interpretadores Python em minha máquina e estava instalando as bibliotecas em diferentes versões. O que eu fiz foi movido para o ambiente virtual e funcionou suave como seda.
— neaGaze
@neaGaze Como você "mudou para o ambiente virtual" para fazê-lo funcionar "suave como seda"?
— Praxiteles
@Praxiteles Bem, já faz um tempo desde que fiz esse projeto, mas acho que usei a configuração de env virtual Python. Em Python, você pode usar uma versão autônoma ou o ambiente virtual. Você pode verificar este link se precisar de mais informações pythonforbeginners.com/basics/how-to-use-python-virtualenv
Esta resposta não explica tudo, onde você está obtendo o app.yamlarquivo?
Você não deve usar pycryptomais! Verifique minha resposta para uma solução melhor!
Tive o mesmo problema no meu Mac ao instalar com pip. Em seguida, removi pycryptoe instalei novamente com easy_install, assim:
também como Luke comentou: Se você tiver problemas para executar esses comandos, certifique-se de executá-los como admin (sudo)
EDITAR: Como o winklerr corretamente observou acima, o pycrypto não é mais seguro. Em vez disso, use o pycryptodome, que é um substituto imediato
É estranho, mas isso resolveu o problema no OS X Mavericks para mim. Eu precisava de sudo para bibliotecas de todo o sistema.
Obrigado elad, estou usando 10.9.3 e recebi o mesmo erro. um milhão de agradecimentos
— Özgür Fırat Özpolat
Eu tinha instalado com pip, que não funcionou, e easy_install, que também não funcionou. (Isso está no Windows.) Simplesmente desinstalá-lo com pip como você sugeriu de alguma forma o fez funcionar. Eu nunca teria pensado em fazer isso em um milhão de anos. Obrigado.
Isso ainda salva o dia em El Capitan.
— não ser
Alguém pode explicar por que isso funciona? (no OSX 10.11.4 com python do homebrew)
— Gabe Kopley
Eu encontrei isso no Mac também, e parece estar relacionado a ter um módulo "crypto", infelizmente com o mesmo nome (não tenho certeza para que serve) instalado junto com o pycrypto via pip.
A correção parece estar removendo criptografia e pycrypto com pip:
e reinstalar o pycrypto:
Agora funciona como esperado quando eu faço algo como:
— user42935
O mesmo para mim no Windows + Vagrant com Ubuntu 14.04 64 bits e Python3
Isso funciona, exceto que em um virtualenv não use sudo
— Michael Robellard
No mac ... se você topar com isso ... tente ver se você pode importar criptografia em vez disso?
Se assim for .. o nome do pacote é a questão Cvs c. Para contornar isso ... basta adicionar essas linhas no início do seu script.
Você sabe que deve conseguir importar paramiko com sucesso.
— Pho
— Igor Micev
Ótimo! THX!!! ;)
— Victor VosMottor agradece Monica
Desinstalando cryptoe pycryptofunciona em mim. Em seguida, instale apenas pycrypto:
— tréplica
Aqui está a explicação para essa solução nos documentos: pycryptodome.readthedocs.io/en/latest/src/…
— Ilya Orson
AVISO: Não use pycryptomais!
Como você pode ler nesta página , o uso de nãopycrypto é mais seguro:
Pycrypto é vulnerável a um estouro de buffer baseado em heap na função ALGnew em block_templace.c. Ele permite que atacantes remotos executem código arbitrário no aplicativo python. Foi atribuído o número CVE-2013-7459 .
O Pycrypto não lançou nenhuma correção para essa vulnerabilidade e nenhum commit foi feito para o projeto desde 20 de junho de 2014.
SOLUÇÃO: Use Python3 e pycryptodome!
TL; DR: pip3 install pycryptodome
Certifique-se de desinstalar outras versões de cryptoou pycryptoprimeiro.
Configurando um novo ambiente virtual
Para instalar um ambiente virtual e configurar tudo, use os seguintes comandos:
# install and create a virtual environment in your target folder
mkdir target_folder
# now activate your venv and 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
# don't forget to deactivate your venv again
Para obter mais informações, consulte pycryptodome.org
Se você possui atualmente instalações de crypto ou pycrypto, você deve desinstalá-los primeiro.
— Gino Mempin
Eu encontrei a solução. O problema está provavelmente na distinção entre maiúsculas e minúsculas (no Windows).
Basta alterar o nome da pasta:
para: C:\Python27\Lib\site-packages\Crypto
Este é o nome da pasta após a instalação do pycrypto:
E agora o seguinte código funciona bem:
— damian1baran
Isso funciona, mas há muitos pacotes dentro e todos precisam ser renomeados.
— user1288329
— ruxming
Eu encontrei isso enquanto procurava por uma solução Linux (Debian). O seguinte funcionou para mim: Não consigo instalar o módulo python "pycrypto" no Debian lenny
— SilverlightFox
se você estiver usando redhat, fedora, centos:
para o meu caso, eu não poderia instalá-lo usando pip
Este nome de pacote referenciado parece não existir mais no yum? "pycrypto"
— k1DBLITZ
Eu tive o mesmo problema 'ImportError: No module named Crypto.Cipher', desde usar GoogleAppEngineLauncher (versão> 1.8.X) com GAE Boilerplate no OSX 10.8.5 (Mountain Lion). No SDK do Google App Engine com tempo de execução python 2.7, pyCrypto 2.6 é a versão sugerida. A solução que funcionou para mim foi ...
1) Baixe a fonte pycrypto2.6 e extraia em algum lugar ( ~/Downloads/pycrypto26)
por exemplo, git clone https://github.com/dlitz/pycrypto.git
2) cd( cd ~/Downloads/pycrypto26) então
3) Execute o seguinte comando de terminal dentro da pasta anterior para instalar o pyCrypto 2.6 manualmente na pasta GAE.
— Lazaros Dinakis
a pergunta do OP é sobre Windows e não OSX
— gldraphael
Pode ser útil observar que a instalação na raiz do projeto também funcionará (independentemente da plataforma)
É uma ótima resposta para o usuário do yosemite!
— KyungHoon Kim
@Lazaros Dinakis: Esta é a solução que funcionou .. de todas as soluções mencionadas nesta página. Obrigado
— gaurav414u
esta resposta resolveu para mim no mac OSX Yosemite 10.10.5. A única coisa é que a instalação falhou com erros para mim. então, copiei manualmente a lib Crypto da minha lib python para lib google_appengine. e agora funciona.
— Boaz Saragossi de
Se você é um macos, renomeie a pasta lib lib/python3.7/site-packages/cryptoparalib/python3.7/site-packages/Crypto
Este funcionou para mim ao contrário de outras soluções. Estou em MacOs
— usuário3527975
Enterrada aqui está a solução que funcionou para mim (no Windows 10)
Experimente com pip3 :
— Arthur araújo
Pode ser um problema de carregamento de módulos Python instalados via pip. Consulte esta resposta Não é possível carregar módulos Python instalados via pip do diretório de pacotes do site e tente algo como
— user666N
Funcionou para mim (Ubuntu 17.10)
Removendo o venv e criando-o novamente com python v3.6
O Pycrypto está obsoleto, teve problemas com ele, usou o Pycryptodome
— applekate
Eu resolvo esse problema mudando a primeira letra para maiúscula. Certifique-se de que '' importe AES de Crypto.Cipher '' não '' de AES de importação de crypto.Cipher ''.
— Zesheng LI
Para CentOS 7.4, instalei primeiro o pip e depois pycrypto usando pip:
— Stuhpa
Até o momento, estou tendo o mesmo problema ao importar, from Crypto.Cipher import AESmesmo depois de instalar / reinstalar o pycrypto algumas vezes. No final das contas é porque pip padronizou para python3.
~ pip --version
instalar o pycrypto com pip2 deve resolver este problema.
Eu obtive este erro "Erro de módulo Crypo.Cipher import AES"
Para instalar o Pycrypto no Windows,
Tente isso no prompt de comando,
Definir caminho = C: \ Python27 \ Scripts (ou seja, caminho onde easy_install está localizado)
Em seguida, execute o seguinte,
Baixe o Pycrypto em " https://pypi.python.org/pypi/pycrypto "
Em seguida, altere o caminho atual para o caminho baixado usando seu terminal:
Por exemplo: root @ xyz-virtual-machine: ~ / pycrypto-2.6.1 #
Em seguida, execute o seguinte usando o terminal:
Funcionou para mim. A esperança funciona para todos ..
— JayaPrakash
Esse problema pode ser corrigido instalando o compilador C ++ (python27 ou python26). Baixe-o da Microsoft https://www.microsoft.com/en-us/download/details.aspx?id=44266 e execute novamente o comando: pip install pycryptopara executar o acesso web gui quando você matar o processo de easy_install.exe.
— user8094201
Talvez você deva fazer isso: pycryptodome == 3.6.1 adicione-o a requirements.txt e instale, o que deve eliminar o relatório de erro. funciona para mim!
— eu sinto sua falta
— Saad Mirza
Bem, isso pode parecer estranho, mas após a instalação pycryptoou pycryptodome, precisamos atualizar o nome do diretório cryptopara Cryptoemlib/site-packages
— AB Abhi
Estou com 3.7. O problema permanece depois que tento instalar o crypto. E a criptografia simplesmente falha no meu caso. Então, no final, minha construção passou pelo pacote abaixo: pip install pycryptodome