brew install python
لتثبيت python 3.7.3pip install numpy --target .
لذلك أنا قادر على تشغيل الكود الخاص بي محليًا وليس لدي أي مشاكل. أنا حيوانات الباندا و matplotlib و boto3 و mpld3 لتنظيم البيانات وعرضها في جدول AWS DDB مع الرسوم البيانية matplotlib التي يتحول mpld3 إلى html. يبدو أن numpy ضروري للباندا ، وكلما حاولت تثبيت هذه المكتبات على دليل الهدف حتى يتمكنوا من العمل في وظيفة lambda ، وفقًا لـ https://docs.aws.amazon.com/lambda/latest/dg/lambda -python-how-to-create-publish-package.html ، أتلقى الخطأ التالي:
"مهم: يرجى قراءة هذا للحصول على نصيحة حول كيفية حل هذه المشكلة!
فشل استيراد الوحدة النمطية للملحق متعدد الصفائح. معظم
من المحتمل أنك تحاول استيراد بنية فاشلة من numpy.
إليك كيفية المتابعة:
git clean -xdf
Note: this error has many possible causes, so please don't comment on
an existing issue about this - open a new one instead.
الخطأ الأصلي كان: لا توجد وحدة باسم "numpy.core._multiarray_umath"
معرّف طلب النهاية: 2fc65f50-420d-441b-930c-665b1c8ab3ea
معرّف طلب التقرير: 2fc65f50-420d-441b-930c-665b1c8ab3ea المدة: 0.85 مللي ثانية المدة: 100 مللي ثانية حجم الذاكرة: 128 ميجا بايت الحد الأقصى للذاكرة المستخدمة: 40 ميجا بايت ""
لعزل المشكلة ، أعدت المحاولة أعلاه باستخدام:
def main(event, context):
a = 100
print(a)
return
و
import numpy as np
def main(event, context):
a = np.array(100)
print(a)
return
تم ضغط كلا الملفين بدليل package
يحتوي على تثبيت مستهدف لـ numpy وفقًا لـ https://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment- package.html. بعد الضغط ، كانت الملفات حوالي 16 ميغا بايت ، لذلك كان لديهم تثبيت غير مكتمل. المثال الأول الذي لم يستورد numpy يعمل بشكل جيد عند اختبار وظيفة Lambda ، لكن الأخطاء الثانية مع رسالة الخطأ الأصلية
لا يخبرك دليل AWS بالقصة كاملة. توزيع Amazon Linux غير متوافق مع تثبيت NumPy العادي مثل PyPi أو conda-forge.
أقترح عليك اتباع أحد هذه الأدلة أو استخدام ملف مضغوط من أحد هذه المستودعات:
https://medium.com/@samme/setting -up-python-3-6-aws-lambda-publish-package-with-numpy-scipy-pillow-and-scikit-image-de488b2afca6
https://medium.com/@korniichuk/lambda -with-pandas-fd81aa2ff25e
https://blog.orikami.nl/building-scipy-pandas-and-numpy-for-aws-lambda-python-3-6-cba9355b44e9
https://github.com/pbegle/aws-lambda-py3.6-pandas-numpy
https://github.com/vitolimandibhrata/aws-lambda-numpy
هذا ليس خطأ NumPy ، لذلك سأغلق المشكلة.
شكرا،
أنا أقدر ردك. لمعلوماتك ، تمكنت من تشغيله من خلال بدء مثيل EC2 مع AWS Linux OS وتثبيت المكتبات هناك. كل شيء يعمل بشكل رائع.
شكرا للمساعدة،
لي
احصل على Outlook لنظام التشغيل iOS https://aka.ms/o0ukef
من: Ralf Gommers [email protected]
تاريخ الإرسال: السبت 4 مايو 2019 الساعة 6:52 صباحًا
إلى: numpy / numpy
نسخة إلى: لي جيمس ؛ مؤلف
الموضوع: Re: [numpy / numpy] تعذر استيراد numpy في وظيفة AWS Lambda (# 13465)
لا يخبرك دليل AWS بالقصة كاملة. توزيع Amazon Linux غير متوافق مع تثبيت NumPy العادي مثل PyPi أو conda-forge.
أقترح عليك اتباع أحد هذه الأدلة أو استخدام ملف مضغوط من أحد هذه المستودعات:
https://medium.com/@samme/setting -up-python-3-6-aws-lambda-publish-package-with-numpy-scipy-pillow-and-scikit-image-de488b2afca6 https: // urldefense. proofpoint.com/v2/url؟u=https-3A__medium.com_-40samme_setting-2Dup-2Dpython-2D3-2D6-2Daws-2Dlambda-2Ddeployment-2Dpackage-2Dwith-2Dnumpy-2Dscipy-2Dpillow-2Dand-2Dscikit-28Dimage DwMCaQ & c = 0hefKdg9jtsMu47wpF0ovg & r = 2qmZ2aA-JTvfrp24tI1PaA & m = o4NpaNDNU2z8VYtFVRO3Z-KgjOittvdP3EKrsYFomhs & s = ZKkVD4AE
https://medium.com/@korniichuk/lambda -with-pandas-fd81aa2ff25e https://urldefense.proofpoint.com/v2/url؟u=https-3A__medium.com_-40korniichuk_lambda-2Dwith-2Dpandas-2Dfd81aa2ff25e&d=DwM 0hefKdg9jtsMu47wpF0ovg & r = 2qmZ2aA-JTvfrp24tI1PaA & m = o4NpaNDNU2z8VYtFVRO3Z-KgjOittvdP3EKrsYfomhs & s = PQOBXsoiGwGl3QBTI
https://blog.orikami.nl/building-scipy-pandas-and-numpy-for-aws-lambda-python-3-6-cba9355b44e9 https://urldefense.proofpoint.com/v2/url؟u=https -3A__blog.orikami.nl_building-2Dscipy-2Dpandas-2Dand-2Dnumpy-2Dfor-2Daws-2Dlambda-2Dpython-2D3-2D6-2Dcba9355b44e9 ود = DwMCaQ وج = 0hefKdg9jtsMu47wpF0ovg وص = 2qmZ2aA-JTvfrp24tI1PaA وم = o4NpaNDNU2z8VYtFVRO3Z-KgjOittvdP3EKrsYfomhs وق = jm1X8lQ78YL30-NRN2kXnOGAhMS1LKSowIOFQMCpq5Y وه =
https://github.com/pbegle/aws-lambda-py3.6-pandas-numpy https://urldefense.proofpoint.com/v2/url؟u=https-3A__github.com_pbegle_aws-2Dlambda-2Dpy3.6-2Dpandas -2Dnumpy & d = DwMCaQ & c = 0hefKdg9jtsMu47wpF0ovg & r = 2qmZ2aA-JTvfrp24tI1PaA & m = o4NpaNDNU2z8VYtFVRO3Z-KgjOittvdP3EKrsYifom1
https://github.com/vitolimandibhrata/aws-lambda-numpy https://urldefense.proofpoint.com/v2/url؟u=https-3A__github.com_vitolimandibhrata_aws-2Dlambda-2Dnumpy&d=DwMCaQ&c=0hefKdg9jtsMu47wpF0ovg&r=2qmZ2aA-JTvfrp24tI1PaA&m=o4NpaNDNU2z8VYtFVRO3Z -KgjOittvdP3EKrsYfomhs & s = poqmiFo_VPWUjgf2NEI4vBxzANNWtRm3sXSUypHO88w & e =
هذا ليس خطأ NumPy ، لذلك سأغلق المشكلة.
-
أنت تتلقى هذا لأنك قمت بتأليف الموضوع.
الرد على هذا البريد الإلكتروني مباشرة، مشاهدته على جيثب https://urldefense.proofpoint.com/v2/url؟u=https-3A__github.com_numpy_numpy_issues_13465-23issuecomment-2D489329007&d=DwMCaQ&c=0hefKdg9jtsMu47wpF0ovg&r=2qmZ2aA-JTvfrp24tI1PaA&m=o4NpaNDNU2z8VYtFVRO3Z-KgjOittvdP3EKrsYfomhs&s=J7VXklMAkObDeLGzi_DueXIZ7gya0qrVm9tZhLH9dzI&e= ، أو كتم موضوع https://urldefense.proofpoint.com/v2/url؟u=https-3A__github.com_notifications_unsubscribe-2Dauth_AHKHI4N5E7XURJJTX7INB6LPTWIJVANCNFSM4HKX25DQ&d=DwMCaQ&c=0hefKdg9jtsMu47wpF0ovg&r=2qmZ2aA-JTvfrp24tI1PaA&m=o4NpaNDNU2z8VYtFVRO3Z-KgjOittvdP3EKrsYfomhs&s=zMXEEFbVt2bm8P0Cn2aJbHDaSdV0ABZ_hgsaB2AWUWg&e= .
rgommers هل تعرف أي مسامير ذات صلة بـ python3.7 على هذا. لقد جربت زوجًا من قائمتك 3.6 وينتهي بي الأمر دائمًا بنفس الحزن حول _multiarray lib. أحتاج إلى إنشاء "طبقة" AWS نظرًا لأن المجموعة التي أحتاجها (numpy ، scipy ، pandas) تتجاوز بدل الحجم لوظيفة واحدة.
iceback إذا كان خطأك مشابهًا لما كان لدي ، والذي كان No module named 'numpy.core._multiarray_umath'
، فإن السبب في ذلك هو عدم تثبيت numpy مع نظام التشغيل الصحيح.
ستقوم AWS lambda بتشغيل AWS linux في وقت التشغيل ، لذلك يجب تثبيت أي حزم مستهدفة مع نظام التشغيل المناسب. إذا كنت تستهدف تثبيت numpy
على دليل package
عبر pip install --target ./package numpy
، وكنت تقوم بتشغيل نظام تشغيل آخر (مثل macOS) ، فسيفشل هذا لأن التثبيت الهدف يفترض أن لن يتغير نظام التشغيل من نظام التشغيل الأصلي الخاص بك.
للتغلب على هذا ، لديك خياران:
سأضطر إلى إعادة زيارة جميع الأشياء التي جربتها الأسبوع الماضي والتي تضمنت korniichuk و github / pbegle والورد يعرف ماذا أيضًا ولكن انتهى به الأمر دائمًا في نفس المكان. البناء غير المستقر على EC2 لا يسير على ما يرام. ربما يكون إصدار Cython خاطئًا (يتوفر 0.27 فقط على نظام AWS Linux). هل يمكنك توضيح رقمك الأول. كيف يمكنك الانتقال من numpy مثبت في مثيل واحد إلى طبقة في Lambda؟
iceback Ya كان هذا محبطًا عندما فعلت ذلك لأول مرة ، لكنه ممكن بالتأكيد. أقوم حاليًا بتشغيل وظائف Lambda مع Python 3.7 مع الحزم الثلاثة التي ذكرتها.
كيف قمت بتنفيذ الخطوة 1. أعلاه تضمنت اتباع الخطوات الموضحة في تحديث وظيفة مع التبعيات الإضافية ، الموضحة هنا . من أجل التبسيط ، سأفترض أن ملف python المحلي الخاص بك يسمى _pony.py_ ويتم استدعاء وظيفة lambda_ مع وظيفة _ride_pony_.
sudo yum install python3 -y
mkdir package
python3 -m pip install --target ./package numpy
python3 -m pip install --target ./package pandas
python3 -m pip install --target ./package scipy
cd package
zip -r9 ../pony.zip .
zip -g pony.zip pony.py
. يحتوي ملف zip الخاص بك الآن على كود lambda الخاص بك إلى جانب وحدات python النمطية المطلوبة ، والتي تم تثبيتها لاستهداف نظام التشغيل AWS Linux OS.** تأكد من أن دالة lambda الخاصة بك تشير إلى & تقوم بتنفيذ اسم الملف والوظيفة الرئيسية ، _pony.ride_pony_ ، إذا لم تكن الوظيفة الافتراضية _lambda_function.lambda_handler_
شكرا جزيلا. أعتقد أن لدي فرصة! (ما أفهمه هو أن الجزء العلوي من zip يجب أن يكون "python" لطبقة Lambda ، لذا سأستخدمها بدلاً من "package")
أصرخ بهذا الكيفية بصوت عالٍ وفخور! لست متأكدًا من المكان الذي تعارضت فيه مع الاقتراح الآخر (على الرغم من أنها كانت من أجل python3.6) لكنني عدت الآن إلى العمل على كود وظيفتي. شكرا جزيلا.
نشرت AWS الآن أيضًا طبقة تتضمن NumPy و SciPy. من https://aws.amazon.com/blogs/aws/new-for-aws-lambda-use-any-programming-language-and-share-common-components/
_ استنادًا إلى ملاحظات العملاء ، ولتقديم مثال على كيفية استخدام Lambda Layers ، فإننا ننشر طبقة عامة تتضمن NumPy و SciPy ، وهما مكتبتان علميتان شائعتان في Python. يمكن أن تساعدك هذه الطبقة المُنشأة مسبقًا والمُحسَّنة على البدء بسرعة كبيرة في معالجة البيانات وتطبيقات التعلم الآلي.
حسنًا ، هل يمكن أن يكون هناك الكثير من وثائق AWX؟ ؛)
في 23 تشرين الأول (أكتوبر) 2019 ، الساعة 4:29 صباحًا ، كتب Ralf Gommers [email protected] :
نشرت AWS الآن أيضًا طبقة تتضمن NumPy و SciPy. من https://aws.amazon.com/blogs/aws/new-for-aws-lambda-use-any-programming-language-and-share-common-components/ https://aws.amazon.com/blogs / aws / new-for-aws-lambda-use-any-program-language-and-share-common-features /
استنادًا إلى ملاحظات العملاء ، ولتقديم مثال على كيفية استخدام Lambda Layers ، نقوم بنشر طبقة عامة تتضمن NumPy و SciPy ، وهما مكتبتان علميتان شائعتان في Python. يمكن أن تساعدك هذه الطبقة المُنشأة مسبقًا والمُحسَّنة على البدء بسرعة كبيرة في معالجة البيانات وتطبيقات التعلم الآلي.-
أنت تتلقى هذا لأنه تم ذكرك.
الرد على هذا البريد الإلكتروني مباشرة، مشاهدته على جيثب https://github.com/numpy/numpy/issues/13465؟email_source=notifications&email_token=AACY7PDHEVUY6IGQ6IXVXPLQQARRNA5CNFSM4HKX25D2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECA5ACQ#issuecomment-545378314 ، أو إلغاء الاشتراك https://github.com/notifications/unsubscribe- المصادقة / AACY7PFK3DUQOBMT5QA2ID3QQARRNANCNFSM4HKX25DQ .
ما نجح بالنسبة لي هو استخدام إصدار Linux من مكتبة numpy (أستخدم macOS). ذهبت إلى https://pypi.org/project/numpy/#files وقمت بتنزيل ملف .whl في الإصدار الذي كنت أبحث عنه (بالنسبة لي ، كان numpy-1.19.0-cp37-cp37m-manylinux1_x86_64.whl) . انتقل بعد ذلك إلى المحطة الطرفية وقم بفك ضغطها عن طريق إجراء "unzip numpy-1.19.0-cp37-cp37m-manylinux1_x86_64.whl". يجب أن يمنحك هذا الإصدار المجزأ الذي سيعمل على Lambda. بعد ذلك ، قم بضغط كل شيء كما كنت تفعل من قبل وقم بتحميله. في النهاية تم حل مشكلة محبطة بشكل لا يصدق بكل بساطة.
واجهت نفس المشكلة ، الحل الذي نجح معي هو أنني قمت بإلغاء تثبيت numpy من جهاز الكمبيوتر الخاص بي ، (windows 7).
مما أضفت طبقة في دالة aws lambda شيئًا يسمى AWSlambda scipy وهذا كل شيء.
واجهت نفس المشكلة مع Windows ولكنني تمكنت من حلها بأي من الطرق التالية:
--use-container
، والتي تحتوي على الشرح التالي في المستندات :إذا كانت وظائفك تعتمد على الحزم التي تحتوي على تبعيات مجمعة في الأصل ، فاستخدم هذه العلامة لبناء وظيفتك داخل حاوية Docker تشبه AWS Lambda.
التعليق الأكثر فائدة
لا يخبرك دليل AWS بالقصة كاملة. توزيع Amazon Linux غير متوافق مع تثبيت NumPy العادي مثل PyPi أو conda-forge.
أقترح عليك اتباع أحد هذه الأدلة أو استخدام ملف مضغوط من أحد هذه المستودعات:
https://medium.com/@samme/setting -up-python-3-6-aws-lambda-publish-package-with-numpy-scipy-pillow-and-scikit-image-de488b2afca6
https://medium.com/@korniichuk/lambda -with-pandas-fd81aa2ff25e
https://blog.orikami.nl/building-scipy-pandas-and-numpy-for-aws-lambda-python-3-6-cba9355b44e9
https://github.com/pbegle/aws-lambda-py3.6-pandas-numpy
https://github.com/vitolimandibhrata/aws-lambda-numpy
هذا ليس خطأ NumPy ، لذلك سأغلق المشكلة.