ImportError: Crypto.Cipher adlı modül yok


120

App.py (Python 3.3, PyCrypto 2.6) çalıştırmayı denediğimde virtualenv'im yukarıda listelenen hatayı döndürmeye devam ediyor. İthalat beyannamem sadece from Crypto.Cipher import AES. Yinelenenleri aradım ve bazılarının olduğunu söyleyebilirsiniz, ancak çözümleri denedim (çoğu çözüm eşit olmasa da) ve hiçbir şey işe yaramadı.

Aşağıda PyCrypto için dosyaların nasıl olduğunu görebilirsiniz:


5
Görünüşe göre bir sanal ortamdaymışsınız. Sanal ortamınız düzgün şekilde etkinleştirildi mi?
Christian Ternus

@ChristianTernus Doğru şekilde etkinleştirildi.
Graham Smith

Ben de aynı sorunu yaşadım. Bu biraz saçma gelecek ama sorunu çözmek için OSX kullanmayı bıraktım, VirtualBox ve bir linux dağıtımını kurdum ve hepsi işe yaradı :)
Jordan

1
Bir dakika ne? ImportErrorgösterilmiştir python 2ise python 3o ModuleNotFoundError.
Black Thunder

@BlackThunder, python3 -c 'import foo'verim ImportError: No module named 'foo'. Bir şey mi kaçırdım?
r2evans

Yanıtlar:


62

Aynı sorunu yaşadım (Linux'ta olsa). Çözüm oldukça basitti - ekleyin:

libraries:
- name: pycrypto
  version: "2.6"

Benim için app.yamldosyanın. Geçmişte doğru bir şekilde çalıştığı için, bunun yeni bir gereklilik olduğunu varsayıyorum.


1
Buna biraz daha eklemek gerekirse, benim durumumda bu çalışmıyordu çünkü makinemde birden fazla Python yorumlayıcı sürümü vardı ve kitaplıkları farklı sürümlerde kuruyordum. Yaptığım şey sanal ortama taşındı ve ipek kadar pürüzsüz çalıştı.
neaGaze

@neaGaze Bunun "ipek kadar pürüzsüz" çalışmasını sağlamak için "sanal ortama" nasıl geçtiniz?
Praxiteles

1
@Praxiteles O projeyi yapmayalı epey oldu ama sanırım Python sanal ortam ayarını kullandım. Python'da bağımsız bir sürümü veya sanal ortamı kullanabilirsiniz. Daha fazla bilgiye ihtiyacınız varsa bu bağlantıya göz atabilirsiniz pythonforbeginners.com/basics/how-to-use-python-virtualenv
neaGaze

7
Bu cevap her şeyi açıklamıyor, app.yamldosyayı nereden alıyorsun ?
Vishrant

3
Artık kullanmamalısın pycrypto! Daha iyi bir çözüm için cevabımı kontrol edin!
winklerrr

196

Mac'imde de aynı sorunu yaşadım pip. Daha sonra şu şekilde kaldırıp pycryptotekrar yükledim easy_install:

pip uninstall pycrypto
easy_install pycrypto

Luke'un da dediği gibi: Bu komutları çalıştırmada sorun yaşıyorsanız, bunları yönetici olarak çalıştırdığınızdan emin olun (sudo)

Bu yardımcı olur umarım!

DÜZENLEME: Yukarıda winklerr'ın doğru bir şekilde belirttiği gibi, pycrypto artık güvenli değil. Bunun yerine pycryptodome kullanın, bu bir drop-in değişimidir


4
Garip ama bu benim için OS X Mavericks'teki sorunu çözdü. Sistem geniş kütüphaneleri için sudo'ya ihtiyacım vardı.
Paul

2
teşekkürler elad, 10.9.3 kullanıyorum ve aynı hatayı aldım. bir milyon teşekkürler
Özgür Fırat Özpolat

4
Çalışmayan pip ile yükledim, ardından easy_install da çalışmadı. (Bu Windows'ta.) Önerdiğiniz gibi pip ile kaldırmanız bir şekilde çalışmasını sağladı. Bunu bir milyon yıl içinde yapmayı asla düşünmezdim. Teşekkür ederim.
user124384

6
Bu hala El Capitan'da günü kurtarıyor.
nonbeing

2
Bunun neden işe yaradığını kimse açıklayabilir mi? (OSX 10.11.4'te homebrew'den python ile)
Gabe Kopley

102

Bununla Mac'te de karşılaştım ve maalesef benzer şekilde adlandırılmış bir "kripto" modülüne (bunun ne için olduğundan emin değilim) pip aracılığıyla pycrypto'nun yanına kurulmasıyla ilgili görünüyor.

Düzeltme, pip ile hem kripto hem de pycrypto'yu kaldırıyor gibi görünüyor:

sudo pip uninstall crypto
sudo pip uninstall pycrypto

ve pycrypto'yu yeniden yüklemek:

sudo pip install pycrypto

Şimdi şöyle bir şey yaptığımda beklendiği gibi çalışıyor:

from Crypto.Cipher import AES

Ubuntu 14.04 64-bit ve Python3 ile Windows + Vagrant'ta benim için aynısı
Juha Untinen

Bu, bir virtualenv'de sudo kullanmamanız dışında çalışır
Michael Robellard

31

Mac'te ... bununla karşılaşırsanız .. bunun yerine kripto alıp alamayacağınıza bakın.

Eğer öyleyse .. paket adı konudur Cvs c. Bunu aşmak için .. bu satırları betiğinizin üstüne eklemeniz yeterlidir.

import crypto
import sys
sys.modules['Crypto'] = crypto

Paramiko'yu başarıyla içe aktarabilmeniz gerektiğini biliyorsunuz.


Bu doğru değil, buradan biraz okuyun: pycryptodome.readthedocs.io/en/latest/src/…
Igor Micev

Harika! Teşekkürler!!! ;)
Victor VosMottor, Monica'ya teşekkürler

25

UYARI: pycryptoArtık kullanmayın !

Eğer okumaya gibi bu sayfayı , kullanımı pycryptoolduğunu değil artık güvenli:

Pycrypto, block_templace.c dosyasındaki ALGnew işlevinde yığın tabanlı arabellek taşmasına karşı savunmasızdır. Uzak saldırganların python uygulamasında rastgele kod çalıştırmasına izin verir. Bu atandı CVE-2013-7459 sayı.

Pycrypto bu güvenlik açığına yönelik herhangi bir düzeltme yayınlamadı ve 20 Haziran 2014'ten bu yana projeye herhangi bir taahhütte bulunulmadı.

ÇÖZÜM: Python3 ve pycryptodome!

TL; DR: pip3 install pycryptodome

İlk cryptoveya diğer sürümlerini kaldırdığınızdan emin olun pycrypto.

Yeni bir sanal ortam kurma

Bir sanal ortam kurmak ve her şeyi ayarlamak için aşağıdaki komutları kullanın:

# 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

Daha fazla bilgi için bkz. Pycryptodome.org


1
Şu anda kripto veya pycrypto yüklemeleriniz varsa, önce bunları kaldırmanız gerekir.
Gino Mempin


21

Çözümü buldum. Sorun muhtemelen büyük / küçük harf duyarlılığındadır (Windows'ta).

Sadece klasörün adını değiştirin:

  • C:\Python27\Lib\site-packages\crypto
  • için: C:\Python27\Lib\site-packages\Crypto

Pycrypto kurulumundan sonra klasör şöyle adlandırılmıştır: görüntü açıklamasını buraya girin

Bunu şu şekilde değiştirdim: görüntü açıklamasını buraya girin

Ve şimdi aşağıdaki kod iyi çalışıyor: görüntü açıklamasını buraya girin


Bu işe yarıyor, ancak yeniden adlandırılması gereken çok fazla paket var.
user1288329


8

redhat, fedora, centos kullanıyorsanız:

sudo yum install pycrypto

benim durumum için pip kullanarak kuramadım


Başvurulan bu paket adı artık yum üzerinde yok gibi görünüyor? "pycrypto"
k1DBLITZ

8

'ImportError: No module named Crypto.Cipher'OSX 10.8.5 (Mountain Lion) üzerinde GAE Boilerplate ile GoogleAppEngineLauncher (sürüm> 1.8.X) kullandığından beri aynı sorunu yaşadım . Python 2.7 çalışma zamanı içeren Google App Engine SDK'da, pyCrypto 2.6 önerilen sürümdür. Benim için işe yarayan çözüm ...

1) Pycrypto2.6 kaynağını indirin, bir yere çıkarın ( ~/Downloads/pycrypto26)

ör. git clone https://github.com/dlitz/pycrypto.git

2) cd( cd ~/Downloads/pycrypto26) sonra

3) pyCrypto 2.6'yı GAE klasörüne manuel olarak kurmak için önceki klasörde aşağıdaki terminal komutunu yürütün.

sudo python setup.py install --install-lib /Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine

1
OP'nin sorusu OSX ile değil Windows ile ilgili
galdin

Proje köküne kurulumun da çalışacağını not etmek faydalı olabilir (platformdan bağımsız olarak)
ocodo

Yosemite kullanıcısı için harika bir cevap!
KyungHoon Kim

@Lazaros Dinakis: Bu sayfada bahsedilen tüm çözümlerin .. işe yarayan çözümü buydu. Teşekkürler
gaurav414u

bu cevap mac OSX Yosemite 10.10.5'te benim için çözdü. Tek şey, kurulumun benim için hatalarla başarısız olması. bu yüzden Crypto kütüphanesini python kütüphanemden google_appengine kütüphanesine manuel olarak kopyaladım. ve şimdi çalışıyor.
Boaz Saragossi

7

MacOS iseniz, lib klasörünü şu lib/python3.7/site-packages/cryptoşekilde yeniden adlandırın:lib/python3.7/site-packages/Crypto


Bu, diğer çözümlerin aksine benim için çalıştı. Ben MacOs üstündeyim
user3527975

Burada gömülü, benim için çalışan çözümdür (Windows 10'da)
Joseph



3

Benim için çalıştı (Ubuntu 17.10)

Python v3.6 ile venv'i kaldırıp yeniden oluşturmak

pip3 install PyJWT
sudo apt-get install build-essential libgmp3-dev python3-dev
pip3 install cryptography
pip3 install pycryptodome
pip3 install pycryptodomex

Pycrypto kullanımdan kaldırıldı, onunla sorunları vardı, Pycryptodome kullandı


2

İlk harf büyüklüğünü büyük olarak değiştirerek bu sorunu çözüyorum. '' Crypto.Cipher'den AES içe aktarın '' değil '' kriptodan '' emin olun.


2

CentOS 7.4 için önce pip ve ardından pip kullanarak pycrypto kurdum:

> sudo yum -y install python-pip 
> sudo python -m pip install pycrypto

2

Bugüne kadar, from Crypto.Cipher import AESbirkaç kez pycrypto kurduğum / yeniden yüklediğimde bile içe aktarırken aynı sorunu yaşıyorum . Sonunda, çünkü pip varsayılan olarak python3'e ayarlanmıştır.

~ pip --version
pip 18.0 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)

pip2 ile pycrypto kurmak bu sorunu çözecektir.


1

Windows 7 için:

Bu hatayı aldım "Modül hatası Crypo.Cipher içe aktarma AES"

Windows'ta Pycrypto kurmak için,

Bunu Komut İstemi'nde deneyin,

Yolu ayarlayın = C: \ Python27 \ Scripts (yani, easy_install'un bulunduğu yol)

Ardından aşağıdakileri yürütün,

easy_install pycrypto

Ubuntu için:

Bunu dene,

Pycrypto'yu " https://pypi.python.org/pypi/pycrypto " adresinden indirin

Ardından, terminalinizi kullanarak mevcut yolunuzu indirilen yola değiştirin:

Örneğin: root @ xyz-sanal-makine: ~ / pycrypto-2.6.1 #

Ardından terminali kullanarak aşağıdakileri yürütün:

python setup.py install

Benim için çalıştı. Umut herkes için işe yarar ..



1

Belki bunu yapmalısınız: pycryptodome == 3.6.1 bunu requirements.txt dosyasına ekleyin ve kurun, bu da hata raporunu ortadan kaldırmalıdır. benim için çalışıyor!



1

Bu garip görünebilir, ancak yükledikten sonra pycryptoveya pycryptodomedizin adını cryptoşu şekilde güncellememiz gerekir Crypto:lib/site-packages

Referans


0

3.7 ile birlikteyim. Kripto kurmaya çalıştıktan sonra sorun devam ediyor. Ve benim durumumda pycrypto başarısız oluyor. Sonunda derlemem aşağıdaki paket aracılığıyla geçti: pip install pycryptodome

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.