2012-06-28 53 views
5

我有一個函數,它使用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 
+1

什麼都可以。你需要顯示你的app.yaml和一些代碼。 – Chris

回答

5

確保安裝在您的本地系統上PyCrypto的版本是一樣的app.yaml中指定的版本。在將軟件包升級到最新版本之前請仔細考慮。

+0

順便說一句,你可以在這裏下載v2.3:https://github.com/dlitz/pycrypto/tags –

+0

對我很好,但我很驚訝:不像GAE libs支持的其他軟件包,這個你必須安裝你自己。法律原因? – ckhan

相關問題