Tensorflow: من واصف الاستيراد google.protobuf كـ _descriptor ImportError: لا توجد وحدة باسم google.protobuf

تم إنشاؤها على ٢٨ يونيو ٢٠١٦  ·  3تعليقات  ·  مصدر: tensorflow/tensorflow

مرحبًا يا رفاق ، أنا أعمل في مشروع باستخدام tensorflow على منصة خدمات Amazon Web Services المصغرة وقد واجهت بعض المشكلات. لقد قمت بتثبيت Tensorflow باستخدام نقطة في Virtualenv. ثم أخذت محتويات /env/lib/python2.7/site-packages/ وضغطتها مع كود المصدر في حزمة تطوير لـ AWS Lambda (env هو اسم my virtualenv). هذه هي عملية استخدام مكتبات python في عملية AWS Lambda ولم أواجه أي مشاكل مع المكتبات الأخرى. لقد فعلت هذا من أجل numpy و scipy و Pillow ومجموعة من المكتبات الأخرى الأقل دعمًا وقد عملت جميعها بشكل جيد مع Lambda.

ومع ذلك ، عندما أحاول استخدام tensorflow ، فإنه يعيد هذا:

غير قادر على استيراد الوحدة النمطية "تصنيف": التتبع (آخر استدعاء): ملف "/var/task/tensorflow/python/__init__.py", line 52 ، فيمن tensorflow.core.framework.graph_pb2 استيراد * ملف "/var/task/tensorflow/core/framework/graph_pb2.py" ، السطر 6 ، فيمن واصف استيراد google.protobuf كـ _descriptor ImportError: لا توجد وحدة باسم google.protobuf خطأ في استيراد tensorflow. ما لم تكن تستخدم bazel ، يجب ألا تحاول استيراد tensorflow من دليل المصدر الخاص به ؛ يرجى الخروج من شجرة مصدر tensorflow ، وإعادة تشغيل مترجم Python من هناك.

التصنيف هو البرنامج النصي المصدر الذي تستدعيه AWS Lambda عند استدعائه وضغطه مع محتويات /env/lib/python2.7/site-packages/ كما وصفته.

تمت معالجة هذه الأخطاء في مكانين آخرين ولكن لم تنجح أي من الحلول التي وجدتها في تلك الصفحات ، ربما لأن أيا منها لم يكن يستخدم lambda. هل من الممكن ألا يعمل Tensorflow مع lambda بسبب الطريقة التي تستورد بها lambda المكتبات؟ إذا كان الأمر كذلك ، فهل هناك على أي حال استيراد حزمة tensorflow من مجلد مصدر فقط أقوم بتحميله كملف مضغوط؟

خطوات محددة لإعادة الإنتاج:

لقد خطر لي أن هذا ربما ليس شيئًا يدعمه Tensorflow على الأرجح نظرًا لأن معظم الأشخاص لا يستخدمون Tensorflow داخل حاويات AWS ولكن آمل أن يتمكن شخص ما من المساعدة أو على الأقل تقديم أفضل ما لديه حتى لو لم يكن لديهم خبرة على وجه التحديد AWS.

شكرا!!

التعليق الأكثر فائدة

حسنًا ، ليس لدي أي فكرة عما يفعله هذا ولكنه أصلح هذه المشكلة برمتها:

القرص المضغوط في حزم الموقع
touch google/__init__.py
افعل ذلك قبل ضغط حزم الموقع
^ باش

ال 3 كومينتر

حسنًا ، ليس لدي أي فكرة عما يفعله هذا ولكنه أصلح هذه المشكلة برمتها:

القرص المضغوط في حزم الموقع
touch google/__init__.py
افعل ذلك قبل ضغط حزم الموقع
^ باش

هذا رائع. ليس لدي أي فكرة عن ماهية المشكلة ، لكنها قد تكون مستوطنة في AWS lambda. سأغلق هذه القضية.

تعثرت على هذا في رحلاتي. إنها ليست Lambda ، إنها وحدة protobuf : https://github.com/google/protobuf/issues/1296

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات