ImportError:Crypto.Cipherという名前のモジュールはありません


120

app.py(Python 3.3、PyCrypto 2.6)を実行しようとすると、virtualenvが上記のエラーを返し続けます。私のインポートステートメントはただfrom Crypto.Cipher import AESです。重複を探しましたが、いくつかあると言われるかもしれませんが、解決策を試しましたが(ほとんどは解決策ではありません)、何も機能しませんでした。

以下のPyCryptoのファイルはどのようなものかを確認できます。


5
あなたはvirtualenvにいるように見えます。virtualenvは正しくアクティブ化されていますか?
Christian Ternus 2013年

@ChristianTernus正しく作動します。
Graham Smith

同じ問題がありました。これはちょうど私がOSXを使用して停止し、私はVirtualBoxのLinuxのディストリビューションをインストールし、それがすべて:)働いていたビットのラメを鳴りますが、それを解決するために
ヨルダン

1
何を待つ?ImportError示されているpython 2中でしばらくpython 3それですModuleNotFoundError
Black Thunder

@BlackThunder、python3 -c 'import foo'利回りImportError: No module named 'foo'。私は何か見落としてますか?
r2evans

回答:


62

Linuxでも同じ問題が発生しました。解決策は非常に簡単でした-追加:

libraries:
- name: pycrypto
  version: "2.6"

私のapp.yamlファイルに。これは以前は正しく機能していたので、これは新しい要件であると思います。


1
これにもう少し追加すると、私の場合、マシンに複数のバージョンのPythonインタープリターがあり、ライブラリを異なるバージョンでインストールしていたため、これは機能しませんでした。私がしたことは仮想環境に移され、シルクのようにスムーズに動作しました。
neaGaze 2017

@neaGaze「仮想環境に移動」して「シルクのように滑らか」に機能させるにはどうしましたか?
Praxiteles 2018

1
@Praxitelesまあ、そのプロジェクトを実行してからしばらく経ちましたが、Python仮想環境設定を使用したと思います。Pythonでは、スタンドアロンバージョンまたは仮想環境を使用できます。さらに詳しい情報が必要な場合は、このリンクをチェックしてください。pythonforbeginners.com
basics /

7
この答えはすべてを説明しているわけではありません、どこでapp.yamlファイルを取得していますか?
ビシュラント

3
pycryptoもう使わないでください!より良い解決策について私の答えをチェックしてください!
winklerrr

196

でインストールするときにMacでも同じ問題が発生しましたpip。次に、次のようpycryptoにしてeasy_install、で削除して再インストールしました。

pip uninstall pycrypto
easy_install pycrypto

また、ルークがコメントしたように:これらのコマンドの実行に問題がある場合は、必ず管理者(sudo)として実行してください

お役に立てれば!

編集:winklerrが上記に正しく言及しているため、pycryptoは安全ではなくなりました。代わりにpycryptodomeを使用してください。これはドロップイン置換です。


4
奇妙ですが、これでOS X Mavericksの問題が修正されました。システム全体のライブラリにはsudoが必要でした。
ポール

2
eladに感謝、私は10.9.3を使用していますが、同じエラーが発生しました。おかげで百万
ÖzgürFıratÖzpolat

4
私はそれを動かなかったpipでインストールしました、それからeasy_installも動きませんでした。(これはWindowsにあります。)提案したように、pipを使用してアンインストールするだけで機能します。100万年後にはそうするつもりはなかったでしょう。ありがとうございました。
user124384

6
これはまだエルキャピタンの日を救います。
2016

2
これが機能する理由を誰かが説明できますか?(OSX 10.11.4(自作のpythonを使用))
Gabe Kopley

102

私もMacでこれに遭遇しましたが、これは残念ながら似たような名前の「crypto」モジュール(それが何であるかわからない)がpipを介してpycryptoと一緒にインストールされていることに関連しているようです。

修正は、pipを使用して暗号とpycryptoの両方を削除しているようです:

sudo pip uninstall crypto
sudo pip uninstall pycrypto

そしてpycryptoを再インストールします:

sudo pip install pycrypto

今私は次のようなことをすると期待どおりに動作します:

from Crypto.Cipher import AES

Ubuntuの14.04、64ビットとのpython3したWindows +ベイグラントで私のために同じ
ユハUntinen

これは、virtualenvでsudoを使用しないことを除いて機能します
Michael Robellard

31

Macの場合...これに遭遇した場合、代わりに暗号をインポートできるかどうかを確認してみますか?

もしそうなら...パッケージ名が問題であるCc。これを回避するには、これらの行をスクリプトの先頭に追加します。

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

paramikoを正常にインポートできるはずです。


それは正しくありませんが、ここではビットをお読みください。pycryptodome.readthedocs.io/en/latest/src/...
イゴールMicev

すごい!どうも!!!;)
Victor VosMottorがモニカ


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をインストールしている場合は、それらを最初にアンインストールする必要があります。
ジノメンピン

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 2017年

8

私は同じ問題を抱えていました 'ImportError: No module named Crypto.Cipher'OSX 10.8.5(Mountain Lion)のGAEボイラープレートで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)cdcd ~/Downloads/pycrypto26)その後

3)pyCrypto 2.6を手動でGAEフォルダーにインストールするために、前のフォルダー内で次のターミナルコマンドを実行します。

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

1
OPの質問は、OSXではなくWindowsに関係しています
gldraphael

プロジェクトルートへのインストールも(プラットフォームに関係なく)機能することに注意してください
ocodo

ヨセミテユーザーには素晴らしい答えです!
キョンフンキム2015

@Lazaros Dinakis:これは、このページで言及されているすべてのソリューションのうち、機能したソリューションです。ありがとう
gaurav414u

この答えは、Mac OSX Yosemite 10.10.5で解決しました。唯一のことは、インストールがエラーで失敗したことです。だから私は自分のpython libからgoogle_appengine libにCrypto libを手動でコピーしました。そして今それは動作します。
ボアズサラゴシ2015年

7

macosの場合、libフォルダーの名前lib/python3.7/site-packages/cryptolib/python3.7/site-packages/Crypto


これは他の解決策とは対照的に私にとってはうまくいきました。私はMacOを使用しています
user3527975

ここに埋められているのは、(Windows 10で)私のために働いたソリューションです
ジョセフ



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の場合:

「モジュールエラーCrypo.CipherインポートAES」というエラーが発生しました

WindowsにPycryptoをインストールするには、

コマンドプロンプトでこれを試してください。

path = 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 install

それは私のために働いた。希望はすべてのために働く。



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.