Tensorflow: from google.protobuf import descriptor as _descriptor ImportError: Kein Modul namens google.protobuf

Erstellt am 28. Juni 2016  ·  3Kommentare  ·  Quelle: tensorflow/tensorflow

Hey Leute, ich arbeite an einem Projekt mit Tensorflow auf der Microservices-Plattform von Amazon Web Services und bin auf ein paar Probleme gestoßen. Ich habe Tensorflow mit Pip in einer virtuellen Umgebung installiert. Dann habe ich den Inhalt von /env/lib/python2.7/site-packages/ genommen und ihn zusammen mit meinem Quellcode in ein Entwicklungspaket für AWS Lambda gezippt (env ist der Name meiner virtuellen Umgebung). Dies ist der Prozess zur Verwendung von Python-Bibliotheken für einen AWS Lambda-Prozess, und ich bin auf keine Probleme mit anderen Bibliotheken gestoßen. Ich habe dies für numpy, scipy, Pillow und eine Reihe anderer, weitaus weniger unterstützter Bibliotheken getan, und sie haben alle gut mit Lambda funktioniert.

Wenn ich jedoch versuche, Tensorflow zu verwenden, wird Folgendes zurückgegeben:

Modul 'classify' kann nicht importiert werden: Traceback (letzter Aufruf zuletzt): Datei "/var/task/tensorflow/python/__init__.py", Zeile 52, inaus tensorflow.core.framework.graph_pb2 import * Datei "/var/task/tensorflow/core/framework/graph_pb2.py", Zeile 6, infrom google.protobuf import descriptor as _descriptor ImportError: Kein Modul namens google.protobuf Fehler beim Importieren von Tensorflow. Wenn Sie nicht Bazel verwenden, sollten Sie nicht versuchen, Tensorflow aus seinem Quellverzeichnis zu importieren. Bitte verlassen Sie den Tensorflow-Quellbaum und starten Sie Ihren Python-Interpreter von dort aus neu.

classify ist das Quellskript, das AWS Lambda aufruft, wenn es aufgerufen wird, und wurde zusammen mit dem Inhalt von /env/lib/python2.7/site-packages/ gezippt, wie ich es beschrieben habe.

Diese Fehler wurden an einigen anderen Stellen behoben, aber keine der Lösungen, die ich auf diesen Seiten gefunden habe, hat für mich funktioniert, wahrscheinlich weil keine von ihnen Lambda verwendet hat. Ist es möglich, dass Tensorflow einfach nicht mit Lambda funktioniert, weil Lambda Bibliotheken importiert? Wenn ja, importiert man das Tensorflow-Paket trotzdem aus einem Quellordner, den ich als ZIP-Datei hochlade?

Spezifische Schritte zum Reproduzieren:

Mir ist aufgefallen, dass dies wahrscheinlich nichts ist, was Tensorflow wahrscheinlich unterstützt, da die meisten Leute Tensorflow nicht in AWS-Containern verwenden, aber hoffentlich kann jemand helfen oder zumindest sein Bestes geben, auch wenn er keine spezielle Erfahrung damit hat AWS.

Danke!!

Hilfreichster Kommentar

Okay, ich habe keine Ahnung, was das bewirkt, aber es hat dieses ganze Problem behoben:

cd in Site-Pakete
touch google/__init__.py
Tun Sie dies, bevor Sie Site-Pakete komprimieren
^Bash

Alle 3 Kommentare

Okay, ich habe keine Ahnung, was das bewirkt, aber es hat dieses ganze Problem behoben:

cd in Site-Pakete
touch google/__init__.py
Tun Sie dies, bevor Sie Site-Pakete komprimieren
^Bash

Das ist faszinierend. Ich habe keine Ahnung, was das Problem ist, aber es kann bei AWS Lambda endemisch sein. Ich werde dieses Thema schließen.

Bin auf meinen Reisen darüber gestolpert. Es ist nicht Lambda, es ist das Modul protobuf : https://github.com/google/protobuf/issues/1296

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen