motor de aplicaciones: ImportError: no hay un módulo llamado Crypto.Hash

Tengo un script que usa Crypto.Hash pero la importación falla con error:

 ImportError: No module named Crypto.Hash 

en mi sys.path si sys.path lista sys.path , hay esta entrada (entre otras):

 /Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib/pycrypto-2.6 

Si abro la ruta anterior, no hay un directorio pycrypto-2.6.

¿Cómo puedo llegar a cargar pycrypto 2.6?

Si importo Crypto.Hash ejecutando python desde la línea de comandos funciona

Tengo que señalar que Pycrypto es compatible con App Engine, está incluido en esta lista .

Además, he incluido el módulo en mi archivo app.yaml :

 libraries: - name: webapp2 version: "2.5.2" - name: pycrypto version: latest - name: lxml version: "2.3" - name: ssl version: latest 

Si envío el código en producción en Appengine, el problema está en mi sistema. Probablemente debería descargar una versión comstackda de pycrypto y ponerlo en algún lugar donde Appengine pueda usarlo.

Parece un problema que ocurre en MAC OSX, todo lo que he logrado hacer es seguir:

En primer lugar, necesita saber dónde está su instalación de pycripto, ejecutando

 sudo pip install pycrypto 

Si instala la biblioteca o obtiene la ruta donde está instalada

Requisito ya satisfecho (use –upgrade to upgrade): pycrypto in …

Luego, considerando que este es un problema que no ocurre en la producción en Appengine, hice esto:

 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 

Ejecute el SDK desde la línea de comandos con dev_appserver.py , en lugar de con la GUI (suponiendo que ya ha comprobado que está instalado a través de pip ).

He visto problemas similares con App Engine al no importar bibliotecas localmente, incluso si están instaladas, y aunque funcionan bien en producción. Me viene a la mente MySQLDB, aunque no puedo encontrar la referencia. De todos modos, esto funcionó para mí.