brew install python
um Python 3.7.3 zu installierenpip install numpy --target .
So kann ich meinen Code lokal ausführen und habe keine Probleme. Ich bin pandas, matplotlib, boto3 und mpld3, um Daten in einer AWS-DDB-Tabelle mit Matplotlib-Grafiken zu organisieren und anzuzeigen, die mpld3 in HTML umwandelt. numpy scheint für Pandas benötigt zu werden, und wann immer ich versuche, diese Bibliotheken in einem Zielverzeichnis zu installieren, damit sie gemäß https://docs.aws.amazon.com/lambda/latest/dg/lambda in einer Lambda-Funktion ausgeführt werden können
```WICHTIG: BITTE LESEN SIE DIES FÜR RATSCHLÄGE ZUR LÖSUNG DIESES PROBLEMS!
Das Importieren des Multiarray-Numpy-Erweiterungsmoduls ist fehlgeschlagen. Die meisten
Wahrscheinlich versuchen Sie, einen fehlgeschlagenen Build von numpy zu importieren.
So gehen Sie vor:
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.
Ursprünglicher Fehler war: Kein Modul namens 'numpy.core._multiarray_umath'
ENDE Anforderungs-ID: 2fc65f50-420d-441b-930c-665b1c8ab3ea
REPORT RequestId: 2fc65f50-420d-441b-930c-665b1c8ab3ea Dauer: 0,85 ms Abgerechnete Dauer: 100 ms Speichergröße: 128 MB Max. verwendeter Speicher: 40 MB ```
Um das Problem zu isolieren, habe ich das Obige erneut versucht mit:
def main(event, context):
a = 100
print(a)
return
und
import numpy as np
def main(event, context):
a = np.array(100)
print(a)
return
Beide Dateien wurden in ein package
-Verzeichnis gezippt, das eine gezielte Installation von numpy enthält, gemäß https://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment- Paket.html. Nach dem Komprimieren waren die Dateien ~16 MB groß, also hatten sie die numpy-Installation. Das erste Beispiel, das numpy nicht importiert hat, läuft beim Testen der Lambda-Funktion einwandfrei, aber das zweite Beispiel zeigt die ursprüngliche Fehlermeldung an
Dieser AWS-Leitfaden erzählt Ihnen nicht die ganze Geschichte. Die Amazon Linux-Distribution ist nicht mit einer regulären NumPy-Installation wie von PyPi oder Conda-Forge kompatibel.
Ich schlage vor, dass Sie einer dieser Anleitungen folgen oder eine ZIP-Datei aus einem dieser Repos verwenden:
https://medium.com/@samme/setting -up-python-3-6-aws-lambda-deployment-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
Dies ist kein NumPy-Fehler, daher werde ich das Problem schließen.
Danke,
Ich schätze Ihre Antwort. FYI Ich konnte es zum Laufen bringen, indem ich eine EC2-Instance mit dem AWS Linux OS initiierte und die Bibliotheken dort installierte. Alles hat super funktioniert.
Danke für die Hilfe,
Lee
Holen Sie sich Outlook für iOS https://aka.ms/o0ukef
Von: Ralf Gommers [email protected]
Gesendet: Samstag, 4. Mai 2019, 6:52 Uhr
An: numpy/numpy
CC: Lee James; Autor
Betreff: Re: [numpy/numpy] numpy kann nicht in die AWS Lambda-Funktion importiert werden (#13465)
Dieser AWS-Leitfaden erzählt Ihnen nicht die ganze Geschichte. Die Amazon Linux-Distribution ist nicht mit einer regulären NumPy-Installation wie von PyPi oder Conda-Forge kompatibel.
Ich schlage vor, dass Sie einer dieser Anleitungen folgen oder eine ZIP-Datei aus einem dieser Repos verwenden:
https://medium.com/@samme/setting -up-python-3-6-aws-lambda-deployment-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-2Dimage-2Dde488b2afca6&d= DwMCaQ&c=0hefKdg9jtsMu47wpF0ovg&r=2qmZ2aA-JTvfrp24tI1PaA&m=o4NpaNDNU2z8VYtFVRO3Z-KgjOittvdP3EKrsYfomhs&s=ZKkVD6L0iXq9wAG929BSTikIAEun9eeS4ZdgU&w1Q
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=DwMCaQ&c= 0hefKdg9jtsMu47wpF0ovg&r=2qmZ2aA-JTvfrp24tI1PaA&m=o4NpaNDNU2z8VYtFVRO3Z-KgjOittvdP3EKrsYfomhs&s=PQOBXsoiGwGl3XWjQFqEbAK77Kg9THTSlEZOmLQNiJo&e=
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 & d = DwMCaQ & c = 0hefKdg9jtsMu47wpF0ovg & r = 2qmZ2aA-JTvfrp24tI1PaA & m = o4NpaNDNU2z8VYtFVRO3Z-KgjOittvdP3EKrsYfomhs s = & jm1X8lQ78YL30-NRN2kXnOGAhMS1LKSowIOFQMCpq5Y & E =
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-KgjOittvdP3EKrsYfomhs&s=708JPsyiAUC0pdCf1QwuLzJ4dEWunF=NuuZ
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=
Dies ist kein NumPy-Fehler, daher werde ich das Problem schließen.
—
Sie erhalten dies, weil Sie den Thread verfasst haben.
Antworten Sie auf diese E - Mail direkt, sehen sie auf GitHub 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= oder stumm schalten den Faden 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 Kennen Sie irgendwelche python3.7-bezogenen Tipps dazu. Ich habe ein paar aus Ihrer Liste von 3.6 ausprobiert und endete immer mit der gleichen Beschwerde über die _multiarray lib. Ich muss eine AWS-"Ebene" erstellen, da die Kombination, die ich benötige (numpy, scipy, pandas), die zulässige Größe einer einzelnen Funktion überschreitet.
@iceback Wenn Ihr Fehler dem ähnlich war, was ich hatte, nämlich No module named 'numpy.core._multiarray_umath'
, wird dies dadurch verursacht, dass numpy nicht mit dem richtigen Betriebssystem installiert wird.
AWS Lambda wird AWS Linux zur Laufzeit ausführen, daher sollten alle zielinstallierten Pakete mit dem richtigen Betriebssystem installiert werden. Wenn Sie numpy
über pip install --target ./package numpy
$ in ein Verzeichnis package
installieren und ein anderes Betriebssystem (z. B. macOS) ausführen, schlägt dies fehl, da die Zielinstallation davon ausgeht, dass die Das Betriebssystem ändert sich nicht von Ihrem nativen Betriebssystem.
Um dies zu umgehen, haben Sie zwei Möglichkeiten:
Ich muss all die Dinge, die ich letzte Woche ausprobiert habe, noch einmal durchgehen, darunter @korniichuk und github/pbegle und Gott weiß was noch, aber immer an derselben Stelle gelandet sind. Numpy auf einem EC2 zu bauen geht nicht gut. Möglicherweise falsche Cython-Version (nur 0.27 auf aws linux verfügbar). Kannst du deine Nummer 1 näher erläutern? Wie gelangt man von einem installierten numpy auf einer Instanz zu einem Layer auf Lambda?
@iceback Ya, das war frustrierend, als ich es zum ersten Mal gemacht habe, aber es ist definitiv möglich. Ich führe derzeit Lambda-Funktionen mit Python 3.7 mit den 3 von Ihnen erwähnten Paketen aus.
Wie ich Schritt 1. oben ausgeführt habe, beinhaltete die Befolgung der Schritte, die in Aktualisieren einer Funktion mit zusätzlichen Abhängigkeiten beschrieben sind und hier beschrieben werden. Der Einfachheit halber gehe ich davon aus, dass Ihre lokale Python-Datei _pony.py_ heißt und die lambda_function mit der _ride_pony_-Funktion aufgerufen wird.
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
in das Installationsverzeichniszip -r9 ../pony.zip .
zip -g pony.zip pony.py
. Ihre ZIP-Datei enthält jetzt Ihren Lambda-Code zusammen mit den erforderlichen Python-Modulen, die für das Ziel mit einem AWS Linux-Betriebssystem installiert wurden.**Stellen Sie sicher, dass Ihre Lambda-Funktion auf Ihren Dateinamen und Ihre Hauptfunktion _pony.ride_pony_ zeigt und diese ausführt, wenn es nicht die Standardfunktion _lambda_function.lambda_handler_ ist.
Danke sehr. Ich glaube, ich habe eine Chance! (Mein Verständnis ist, dass der obere Teil des Reißverschlusses für eine Lambda-Ebene "Python" sein muss, also werde ich das anstelle von "Paket" verwenden.)
Rufen Sie diese Anleitung laut und stolz aus! Ich bin mir nicht sicher, wo ich mit dem anderen Vorschlag in Konflikt geraten bin (obwohl sie für python3.6 waren), aber ich arbeite jetzt wieder an meinem Funktionscode. Danke vielmals.
AWS hat nun auch einen Layer veröffentlicht, der NumPy und SciPy beinhaltet. Von https://aws.amazon.com/blogs/aws/new-for-aws-lambda-use-any-programming-language-and-share-common-components/
_Basierend auf unserem Kundenfeedback und um ein Beispiel für die Verwendung von Lambda-Layern zu geben, veröffentlichen wir einen öffentlichen Layer, der NumPy und SciPy enthält, zwei beliebte wissenschaftliche Bibliotheken für Python. Diese vorgefertigte und optimierte Ebene kann Ihnen helfen, sehr schnell mit Datenverarbeitungs- und maschinellen Lernanwendungen zu beginnen._
Hm, könnte es zu viel AWX-Dokumentation geben? ;)
Am 23. Oktober 2019 um 4:29 Uhr schrieb Ralf Gommers [email protected] :
AWS hat nun auch einen Layer veröffentlicht, der NumPy und SciPy beinhaltet. Von 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-programming-language-and-share-common-components/
Basierend auf unserem Kundenfeedback und um ein Beispiel für die Verwendung von Lambda-Layern zu geben, veröffentlichen wir einen öffentlichen Layer, der NumPy und SciPy enthält, zwei beliebte wissenschaftliche Bibliotheken für Python. Diese vorgefertigte und optimierte Ebene kann Ihnen helfen, sehr schnell mit Datenverarbeitungs- und maschinellen Lernanwendungen zu beginnen.—
Sie erhalten dies, weil Sie erwähnt wurden.
Antworten Sie auf diese E - Mail direkt, sehen sie auf GitHub https://github.com/numpy/numpy/issues/13465?email_source=notifications&email_token=AACY7PDHEVUY6IGQ6IXVXPLQQARRNA5CNFSM4HKX25D2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECA5ACQ#issuecomment-545378314 oder abmelden https://github.com/notifications/unsubscribe- auth/AACY7PFK3DUQOBMT5QA2ID3QQARRNANCNFSM4HKX25DQ .
Was für mich funktioniert hat, war die Verwendung einer Linux-Version der numpy-Bibliothek (ich verwende macOS). Ich ging zu https://pypi.org/project/numpy/#files und lud die .whl-Datei in der Version herunter, nach der ich suchte (für mich war es numpy-1.19.0-cp37-cp37m-manylinux1_x86_64.whl) . Gehen Sie als nächstes zum Terminal und entpacken Sie es, indem Sie 'unzip numpy-1.19.0-cp37-cp37m-manylinux1_x86_64.whl' ausführen. Dies sollte Ihnen die numpy-Version geben, die auf Lambda funktioniert. Dann komprimieren Sie alles wie zuvor und laden es hoch. Am Ende wurde ein unglaublich frustrierendes Problem ziemlich einfach gelöst.
Ich hatte das gleiche Problem, die Lösung, die für mich funktioniert hat, ist, dass ich numpy von meinem PC (Windows 7) deinstalliert habe.
als ich eine Schicht in der aws Lambda-Funktion hinzugefügt habe, etwas namens AWSlambda scipy und das war's.
Ich bin auf das gleiche Problem mit Windows gestoßen, konnte es aber mit einem der folgenden Ansätze lösen:
--use-container
-Flags, das die folgende Erklärung in der Dokumentation enthält:Wenn Ihre Funktionen von Paketen abhängen, die nativ kompilierte Abhängigkeiten haben, verwenden Sie dieses Flag, um Ihre Funktion in einem AWS Lambda-ähnlichen Docker-Container zu erstellen.
Hilfreichster Kommentar
Dieser AWS-Leitfaden erzählt Ihnen nicht die ganze Geschichte. Die Amazon Linux-Distribution ist nicht mit einer regulären NumPy-Installation wie von PyPi oder Conda-Forge kompatibel.
Ich schlage vor, dass Sie einer dieser Anleitungen folgen oder eine ZIP-Datei aus einem dieser Repos verwenden:
https://medium.com/@samme/setting -up-python-3-6-aws-lambda-deployment-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
Dies ist kein NumPy-Fehler, daher werde ich das Problem schließen.