Tensorflow: do descritor de importação google.protobuf como _descriptor ImportError: Nenhum módulo chamado google.protobuf

Criado em 28 jun. 2016  ·  3Comentários  ·  Fonte: tensorflow/tensorflow

Olá pessoal estou trabalhando em um projeto usando tensorflow na plataforma de microsserviços Amazon Web Services e me deparei com alguns problemas. Eu instalei o tensorflow usando pip em um virtualenv. Em seguida, peguei o conteúdo de /env/lib/python2.7/site-packages/ e o compactei junto com meu código-fonte em um pacote de desenvolvimento para AWS Lambda (env é o nome do meu virtualenv). Este é o processo para usar bibliotecas python para um processo AWS Lambda e não tive nenhum problema com outras bibliotecas. Eu fiz isso para numpy,scipy,Pillow e várias outras bibliotecas muito menos suportadas e todas funcionaram bem com o Lambda.

No entanto, quando tento usar o tensorflow, ele retorna isso:

Não é possível importar o módulo 'classificar': Traceback (última chamada mais recente): Arquivo "/var/task/tensorflow/python/__init__.py", linha 52, emde tensorflow.core.framework.graph_pb2 import * Arquivo "/var/task/tensorflow/core/framework/graph_pb2.py", linha 6, emdo descritor de importação google.protobuf como _descriptor ImportError: Nenhum módulo chamado google.protobuf Erro ao importar o tensorflow. A menos que você esteja usando o bazel, você não deve tentar importar o tensorflow de seu diretório de origem; por favor, saia da árvore de origem do tensorflow e reinicie seu interpretador python de lá.

classificar é o script de origem que o AWS Lambda chama quando é invocado e compactado junto com o conteúdo de /env/lib/python2.7/site-packages/ conforme descrevi.

Esses erros foram resolvidos em alguns outros lugares, mas nenhuma das soluções que encontrei nessas páginas funcionou para mim, provavelmente porque nenhuma delas estava usando lambda. É possível que o tensorflow simplesmente não funcione com lambda devido à maneira como o lambda importa bibliotecas? Em caso afirmativo, existe alguma maneira de importar o pacote tensorflow de apenas uma pasta de origem que eu carrego como um zip?

Etapas específicas para reproduzir:

Ocorreu-me que isso provavelmente não é algo que o tensorflow provavelmente está suportando, já que a maioria das pessoas não está usando o tensorflow dentro de contêineres da AWS, mas espero que alguém possa ajudar ou pelo menos dar o melhor de si, mesmo que não tenha experiência específica com AWS.

Obrigado!!

Comentários muito úteis

Ok, não tenho ideia do que isso faz, mas corrigiu todo esse problema::

cd em pacotes de sites
touch google/__init__.py
faça isso antes de compactar os pacotes do site
^bash

Todos 3 comentários

Ok, não tenho ideia do que isso faz, mas corrigiu todo esse problema::

cd em pacotes de sites
touch google/__init__.py
faça isso antes de compactar os pacotes do site
^bash

Isso é fascinante. Não tenho ideia de qual seja o problema, mas pode ser endêmico do AWS lambda. Vou encerrar este assunto.

Tropecei nisso nas minhas viagens. Não é Lambda, é o módulo protobuf : https://github.com/google/protobuf/issues/1296

Esta página foi útil?
0 / 5 - 0 avaliações