我有一個函數,它使用PyCrypto AES加密字符串。當我在單元測試中調用該函數時,一切正常。在生產環境中,它也可以正常工作。但是,在GAE開發服務器上調用該函數時,會引發錯誤:「ImportError:無法導入名稱blockalgo」。我在Windows 7(64位)和Mac OS 10.5上測試了它。兩者都導致相同的錯誤。我使用Python 2.7的Google App Engine。可能是什麼問題呢?PyCrypto在谷歌App Engine開發服務器「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