Hola chicos, estoy trabajando en un proyecto que usa tensorflow en la plataforma de microservicios de Amazon Web Services y me he encontrado con algunos problemas. Instalé tensorflow usando pip en un virtualenv. Luego tomé el contenido de /env/lib/python2.7/site-packages/ y lo comprimí junto con mi código fuente en un paquete de desarrollo para AWS Lambda (env es el nombre de mi virtualenv). Este es el proceso para usar bibliotecas de python para un proceso de AWS Lambda y no he tenido ningún problema con otras bibliotecas. He hecho esto para numpy, scipy, Pillow y un montón de otras bibliotecas mucho menos compatibles y todas han funcionado bien con Lambda.
Sin embargo, cuando intento usar tensorflow, devuelve esto:
No se puede importar el módulo 'clasificar': Rastreo (última llamada más reciente): Archivo "/var/task/tensorflow/python/__init__.py",
línea 52, en
classify es el script de origen que AWS Lambda llama cuando se invoca y se comprimió junto con el contenido de /env/lib/python2.7/site-packages/ como lo describí.
Estos errores se han abordado en un par de otros lugares, pero ninguna de las soluciones que encontré en esas páginas me funcionó, probablemente porque ninguna de ellas usaba lambda. ¿Es posible que tensorflow simplemente no funcione con lambda debido a la forma en que lambda importa bibliotecas? Si es así, ¿hay alguna forma de importar el paquete tensorflow desde solo una carpeta de origen que cargo como un zip?
Pasos específicos para reproducir:
Se me ocurrió que esto probablemente no sea algo que tensorflow admita, dado que la mayoría de las personas no usan tensorflow dentro de los contenedores de AWS, pero espero que alguien pueda ayudar o al menos dar lo mejor de sí, incluso si no tienen experiencia específica con AWS.
¡¡Gracias!!
De acuerdo, no tengo idea de qué hace esto, pero solucionó todo este problema::
cd en paquetes de sitio
touch google/__init__.py
haz esto antes de comprimir los paquetes del sitio
^bash
Eso es fascinante. No tengo idea de cuál es el problema, pero puede ser endémico de AWS lambda. Cerraré este tema.
Tropecé con esto en mis viajes. No es Lambda, es el módulo protobuf
: https://github.com/google/protobuf/issues/1296
Comentario más útil
De acuerdo, no tengo idea de qué hace esto, pero solucionó todo este problema::
cd en paquetes de sitio
touch google/__init__.py
haz esto antes de comprimir los paquetes del sitio
^bash