ImportError : Crypto.Cipher라는 모듈이 없습니다.


120

app.py (Python 3.3, PyCrypto 2.6)를 실행하려고하면 virtualenv가 계속 위에 나열된 오류를 반환합니다. 내 수입 명세서는 from Crypto.Cipher import AES. 나는 중복을 찾았고 일부가 있다고 말할 수 있지만 해결책을 시도했지만 (대부분은 해결책이 아니지만) 아무것도 작동하지 않았습니다.

아래에서 PyCrypto의 파일이 어떤 것인지 확인할 수 있습니다.


5
virtualenv에있는 것 같습니다. virtualenv가 제대로 활성화 되었습니까?
Christian Ternus

@ChristianTernus 제대로 활성화되었습니다.
Graham Smith

나는 같은 문제가 있었다. 이것은 약간 절름발이로 들릴 것이지만 해결하기 위해 OSX 사용을 중단하고 VirtualBox와 Linux 배포판을 설치했으며 모두 작동했습니다. :)
Jordan

1
무엇을 기다립니다? ImportError에 도시되어 python 2있는 동안 python 3은이다 ModuleNotFoundError.
Black Thunder

@BlackThunder, python3 -c 'import foo'수율 ImportError: No module named 'foo'. 내가 뭐 놓친 거 없니?
r2evans

답변:


62

나는 같은 문제가 있었다 (그러나 리눅스에서는). 솔루션은 매우 간단했습니다. 추가 :

libraries:
- name: pycrypto
  version: "2.6"

app.yaml파일에. 이것은 과거에 올바르게 작동했기 때문에 이것이 새로운 요구 사항이라고 가정합니다.


1
이것에 조금 더 추가하기 위해, 내 경우에는 내 컴퓨터에 여러 버전의 Python 인터프리터가 있고 라이브러리를 다른 버전으로 설치했기 때문에 작동하지 않았습니다. 제가 한 일은 가상 환경으로 옮겨졌고 실크처럼 부드럽게 작동했습니다.
neaGaze

@neaGaze "실크처럼 부드럽게"작동하도록 "가상 환경으로 이동"한 방법은 무엇입니까?
Praxiteles

1
@Praxiteles 글쎄, 그 프로젝트를 한 지 오래되었지만 Python 가상 환경 설정을 사용한 것 같습니다. Python에서는 독립 실행 형 버전이나 가상 환경을 사용할 수 있습니다. 더 많은 정보가 필요한 경우이 링크를 확인할 수 있습니다. pythonforbeginners.com/basics/how-to-use-python-virtualenv
neaGaze

7
이 답변은 모든 것을 설명하지 않습니다. app.yaml파일을 어디서 얻 습니까?
Vishrant

3
pycrypto더 이상 사용 하지 마세요! 더 나은 솔루션을 위해 내 대답을 확인하십시오!
winklerrr

196

.NET을 사용하여 설치할 때 Mac에서 동일한 문제가 발생했습니다 pip. 그런 다음 다음 pycrypto과 같이 제거 하고 다시 설치했습니다 easy_install.

pip uninstall pycrypto
easy_install pycrypto

Luke가 말한대로 : 이러한 명령을 실행하는 데 문제가 있으면 admin (sudo)으로 실행하십시오.

도움이 되었기를 바랍니다!

편집 : winklerr이 위에서 올바르게 언급했듯이 pycrypto는 더 이상 안전하지 않습니다. 대신 pycryptodome을 사용하십시오. 드롭 인 대체품입니다.


4
이상하지만 이것은 나를 위해 OS X Mavericks의 문제를 해결했습니다. 시스템 전체 라이브러리에는 sudo가 필요했습니다.
Paul

2
감사합니다 elad, 나는 10.9.3을 사용하고 있으며 동일한 오류가 발생했습니다. 백만 감사합니다
Özgür Fırat Özpolat

4
작동하지 않는 pip와 함께 설치 한 다음 easy_install도 작동하지 않았습니다. (이것은 Windows에 있습니다.) 어떻게 든 작동하도록 제안한대로 pip로 제거하기 만하면됩니다. 나는 백만 년 동안 그렇게 생각하지 못했을 것입니다. 감사합니다.
user124384

6
이것은 여전히 ​​El Capitan의 하루를 저장합니다.
nonbeing

2
왜 이것이 작동하는지 설명 할 수 있습니까? (OSX 10.11.4에 사제에서 파이썬)
게이브 Kopley

102

나는 Mac에서도이 문제를 만났고, 불행하게도 pip를 통해 pycrypto와 함께 설치된 "crypto"모듈 (그게 무엇인지 확실하지 않음)과 관련이있는 것 같습니다.

수정은 pip로 crypto 및 pycrypto를 모두 제거하는 것 같습니다.

sudo pip uninstall crypto
sudo pip uninstall pycrypto

및 pycrypto 재설치 :

sudo pip install pycrypto

이제 다음과 같이 할 때 예상대로 작동합니다.

from Crypto.Cipher import AES

우분투 14.04 64 비트 및 Python3와 윈도우 + 방랑에서 나를 위해 동일
주하 Untinen

VIRTUALENV하는 것을 제외하고이 작품은 sudo를 사용하지 않는
마이클 Robellard

31

Mac에서 ...이 문제가 발생하면 대신 암호화를 가져올 수 있는지 확인 하시겠습니까?

그렇다면 .. 패키지 이름이 문제 Cc. 이 문제를 해결하려면 .. 스크립트 맨 위에이 줄을 추가하십시오.

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

paramiko를 성공적으로 가져올 수 있어야합니다.


정답이 아닙니다. 여기에서 조금 읽으십시오. pycryptodome.readthedocs.io/en/latest/src/…
Igor Micev



23

경고 : pycrypto더 이상 사용하지 마십시오 !

당신이 읽을 수있는 것처럼 이 페이지 의 사용법은 pycrypto입니다 하지 더 이상 안전 :

Pycrypto는 block_templace.c의 ALGnew 함수에서 힙 기반 버퍼 오버플로에 취약합니다. 원격 공격자가 Python 애플리케이션에서 임의의 코드를 실행할 수 있습니다. CVE-2013-7459 번호 가 할당되었습니다 .

Pycrypto는 해당 취약점에 대한 수정 사항을 발표하지 않았으며 2014 년 6 월 20 일 이후로 프로젝트에 대한 커밋이 이루어지지 않았습니다.

솔루션 : Python3 및 pycryptodome!

TL; DR : pip3 install pycryptodome

crypto또는의 다른 버전을 pycrypto먼저 제거해야합니다 .

새로운 가상 환경 설정

가상 환경을 설치하고 모든 것을 설정하려면 다음 명령을 사용하십시오.

# 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를 참조하세요.


1
현재 crypto 또는 pycrypto가 설치되어있는 경우 먼저 제거해야합니다.
Gino Mempin

21

해결책을 찾았습니다. 문제는 아마도 대소 문자 구분 (Windows에서) 일 것입니다.

폴더 이름 만 변경하면됩니다.

  • C:\Python27\Lib\site-packages\crypto
  • 에: C:\Python27\Lib\site-packages\Crypto

다음은 pycrypto 설치 후 폴더 이름이 지정된 방법입니다. 여기에 이미지 설명 입력

나는 그것을 다음과 같이 변경했습니다. 여기에 이미지 설명 입력

이제 다음 코드가 제대로 작동합니다. 여기에 이미지 설명 입력


이것은 작동하지만 이름을 바꿔야 할 패키지가 너무 많습니다.
user1288329


8

redhat, fedora, centos를 사용하는 경우 :

sudo yum install pycrypto

제 경우에는 pip를 사용하여 설치할 수 없습니다.


참조 된이 패키지 이름은 yum에 더 이상 존재하지 않는 것 같습니다. "pycrypto"
k1DBLITZ

8

'ImportError: No module named Crypto.Cipher'OSX 10.8.5 (Mountain Lion)에서 GAE Boilerplate와 함께 GoogleAppEngineLauncher (버전> 1.8.X)를 사용하기 때문에 동일한 문제가 발생했습니다 . 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

1
영업 이익의 질문은 Windows 및하지 OSX과 관련이있다
gldraphael

프로젝트 루트에 설치하는 것도 (플랫폼에 관계없이) 작동한다는 점에 유의하는 것이 유용 할 수 있습니다.
ocodo

요세미티 사용자에게 좋은 답변입니다!
김경훈 2015-01-16

@Lazaros Dinakis : 이것은이 페이지에 언급 된 모든 솔루션 중에서 작동했던 솔루션입니다. 감사합니다
gaurav414u 2015-04-23

이 답변은 Mac OSX Yosemite 10.10.5에서 저를 위해 해결되었습니다. 유일한 것은 설치가 실패하여 오류가 발생한다는 것입니다. 그래서 수동으로 내 python lib에서 google_appengine lib로 Crypto lib를 복사했습니다. 이제 작동합니다.
Boaz Saragossi 2015

7

macOS 인 경우 lib 폴더의 이름 lib/python3.7/site-packages/cryptolib/python3.7/site-packages/Crypto


이것은 다른 솔루션과 달리 나를 위해 일했습니다. 나는 MacOs를 사용하고 있습니다
user3527975

나를 위해 일한 솔루션이 여기에 묻혀 있습니다 (Windows 10에서)
Joseph



3

나를 위해 일함 (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을 사용했습니다.


2

이 문제는 첫 대소 문자를 대문자로 변경하여 해결합니다. ''from Crypto.Cipher import AES ''가 ''from crypto.Cipher import AES ''가 아닌지 확인하십시오.


2

CentOS 7.4의 경우 먼저 pip를 설치 한 다음 pip를 사용하여 pycrypto를 설치했습니다.

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

2

지금까지 from Crypto.Cipher import AESpycrypto를 몇 번 설치 / 재설치 한 경우에도 가져올 때 동일한 문제가 발생 합니다. pip가 python3으로 기본 설정 되었기 때문입니다.

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

pip2와 함께 pycrypto를 설치하면이 문제가 해결됩니다.


1

Windows 7의 경우 :

"Module error Crypo.Cipher import 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 설치

그것은 나를 위해 일했습니다. 희망은 모두에게 효과가 있습니다 ..



1

아마도 이렇게해야합니다 : pycryptodome == 3.6.1 requirements.txt에 추가하고 설치하면 오류 보고서가 제거됩니다. 그것은 나를 위해 작동합니다!



1

이상하게 보일 수 있지만 pycrypto또는 을 설치 한 후에 pycryptodome는 디렉토리 이름 cryptoCryptoin 으로 업데이트해야 합니다 .lib/site-packages

참고


0

나는 3.7입니다. 암호화를 설치하려고 시도한 후에도 문제가 남아 있습니다. 그리고 pycrypto는 제 경우에 실패합니다. 그래서 결국 내 빌드는 아래 패키지를 통해 전달되었습니다. pip install pycryptodome

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.