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

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

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



답변

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

libraries:
- name: pycrypto
  version: "2.6"

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


답변

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

pip uninstall pycrypto
easy_install pycrypto

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

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

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


답변

나는 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


답변

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

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

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

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


답변

나를 제거 crypto하고 pycrypto작동합니다. 그런 다음 다음 만 설치하십시오 pycrypto.

pip uninstall crypto
pip uninstall pycrypto
pip install pycrypto


답변

경고 : 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를 참조하세요.


답변

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

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

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

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

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

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