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