Crypto.Hash
を使用するスクリプトがありますが、インポートがエラーで失敗します:
ImportError: No module named Crypto.Hash
私のsys.path
にsys.path
リストを印刷すると、(とりわけ)次のエントリがあります。
/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/pycrypto-2.6
上記のパスを開くと、pycrypto-2.6ディレクトリがありません。
Pycrypto 2.6をロードするにはどうすればよいですか?
コマンドラインからCrypto.Hash
running pythonをインポートすると、機能します
PycryptoはAppEngineでサポートされており、 このリスト に含まれていることを指摘する必要があります。
さらに、モジュールをapp.yaml
ファイルに含めました。
libraries:
- name: webapp2
version: "2.5.2"
- name: pycrypto
version: latest
- name: lxml
version: "2.3"
- name: ssl
version: latest
それが機能するappengineで本番環境でコードを送信する場合、問題は私のシステムにあります。おそらくpycryptoのコンパイル済みバージョンをダウンロードして、appengineが使用できる場所に配置する必要があります。
MAC OSXで発生する問題のようですが、私が何とかしたのは次のとおりです。
まず、pycriptoのインストールがどこにあるかを知る必要があります。
Sudo pip install pycrypto
ライブラリをインストールするか、ライブラリがインストールされているパスを取得します
要件はすでに満たされています(アップグレードするには--upgradeを使用してください):pycrypto in .. ..
次に、これはappengineの本番環境では発生しない問題であることを考慮して、次のようにしました。
try:
from Crypto.Hash import SHA
except ImportError:
import sys
sys.path.append('/[mypath]/anaconda/lib/python2.7/site-packages')
from Crypto.Hash import SHA # requires PyCrypto
GUIではなくdev_appserver.py
を使用してコマンドラインからSDKを実行します(pip
を介してインストールされていることをすでに確認していることを前提としています)。
ライブラリがインストールされていても、本番環境では正常に機能していても、AppEngineがライブラリをローカルにインポートしないという同様の問題が発生しました。参照が見つかりませんが、MySQLDBが思い浮かびます。とにかく、これは私のために働いた。