PyCryptoを使用してAESで文字列を暗号化する機能があります。単体テストでその関数を呼び出すと、すべて正常に動作します。運用環境では、正常に動作します。ただし、関数がGAE開発サーバー上で呼び出されると、 "ImportError:name blockalgoをインポートできません"というエラーがスローされます。 Windows 7(64ビット)とMac OS 10.5でテストしました。両方とも同じエラーが発生しました。 Python 2.7でGoogle App Engineを使用しています。何が問題なの?Google App Engine開発サーバーのPyCrypto「ImportError:名前blockalgoをインポートできません」
app.yamlを
application: xxx
version: 6
runtime: python27
api_version: 1
threadsafe: true
libraries:
- name: django
version: "1.2"
- name: webapp2
version: "2.3"
- name: jinja2
version: "2.6"
- name: pycrypto
version: "2.3"
- name: PIL
version: "1.1.7"
builtins:
- appstats: on
- remote_api: on
inbound_services:
- mail
- warmup
暗号化機能:
def encrypt(plaintext):
from Crypto.Cipher import AES
import hashlib
password = 'xxx'
key = hashlib.sha256(password).digest()
mode = AES.MODE_ECB
encryptor = AES.new(key, mode)
BLOCK_SIZE = 16
PADDING = '{'
pad = lambda s: s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) * PADDING
EncodeAES = lambda c, s: b58encode(c.encrypt(pad(s)))
encrypted = EncodeAES(encryptor, plaintext)
if len(encrypted) < 22:
for i in range (len(encrypted), 22):
encrypted += "_"
return encrypted
あなたはapp.yamlといくつかのコードを表示する必要があります。 – Chris