Tensorflow: de google.protobuf descriptor de importación como _descriptor ImportError: ningún módulo llamado google.protobuf

Creado en 28 jun. 2016  ·  3Comentarios  ·  Fuente: tensorflow/tensorflow

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, enfrom tensorflow.core.framework.graph_pb2 importar * Archivo "/var/task/tensorflow/core/framework/graph_pb2.py", línea 6, ende google.protobuf descriptor de importación como _descriptor ImportError: ningún módulo llamado google.protobuf Error al importar tensorflow. A menos que esté utilizando bazel, no debe intentar importar tensorflow desde su directorio de origen; salga del árbol de fuentes de tensorflow y reinicie su intérprete de python desde allí.

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!!

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

Todos 3 comentarios

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

¿Fue útil esta página
0 / 5 - 0 calificaciones