2012-06-28 20 views
5

Tengo una función que encripta una cadena con AES utilizando PyCrypto. Cuando llamo a esa función en las pruebas de mi unidad, todo funciona bien. En el entorno de producción, funciona bien también. Sin embargo, cuando se llama a la función en el servidor de desarrollo GAE, se produce un error: "ImportError: no se puede importar el nombre blockalgo". Lo probé en Windows 7 (64 bit) y Mac OS 10.5. Ambos resultaron en el mismo error. Estoy usando Google App Engine con Python 2.7. ¿Cual podría ser el problema? funciónPyCrypto en el servidor de desarrollo de Google App Engine "ImportError: no se puede importar el nombre 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 

cifrado:

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

Cualquier cosa. Debes mostrar tu app.yaml y algún código. – Chris

Respuesta

5

Asegúrese de que la versión de PyCrypto que se instala en el sistema local es la misma que la versión especificada en app.yaml. Piense dos veces antes de actualizar un paquete a la versión más nueva.

+0

Dicho sea de paso, uno puede descargar v2.3 aquí: https://github.com/dlitz/pycrypto/tags –

+0

Funcionó muy bien para mí, pero me sorprendió: a diferencia de cualquier otro paquete al que GAE libs tenga soporte, este tiene que instalarlo tú mismo. ¿Razones legales? – ckhan

Cuestiones relacionadas