brew install python
pour installer python 3.7.3pip install numpy --target .
Je peux donc exécuter mon code localement et je n'ai aucun problème. Je suis pandas, matplotlib, boto3 et mpld3 pour organiser et afficher des données dans une table AWS DDB avec des graphiques matplotlib que mpld3 transforme en html. numpy semble être nécessaire pour les pandas, et chaque fois que j'essaie d'installer ces bibliothèques dans un répertoire cible afin qu'elles puissent s'exécuter dans une fonction lambda, selon https://docs.aws.amazon.com/lambda/latest/dg/lambda -python-how-to-create-deployment-package.html , j'obtiens l'erreur suivante :
```IMPORTANT : VEUILLEZ LIRE CECI POUR AVOIR DES CONSEILS SUR LA RÉSOLUTION DE CE PROBLÈME !
L'importation du module d'extension numpy multiarray a échoué. Plus
vous essayez probablement d'importer une version échouée de numpy.
Voici comment procéder :
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.
L'erreur d'origine était : aucun module nommé 'numpy.core._multiarray_umath'
FIN ID de demande : 2fc65f50-420d-441b-930c-665b1c8ab3ea
REPORT RequestId : 2fc65f50-420d-441b-930c-665b1c8ab3ea Durée : 0,85 ms Durée facturée : 100 ms Taille de la mémoire : 128 Mo Mémoire max. utilisée : 40 Mo ```
Pour isoler le problème, j'ai réessayé ce qui précède avec:
def main(event, context):
a = 100
print(a)
return
et
import numpy as np
def main(event, context):
a = np.array(100)
print(a)
return
Les deux fichiers ont été compressés dans un répertoire package
contenant une installation ciblée de numpy selon https://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment- package.html. Après avoir compressé, les fichiers faisaient environ 16 Mo, ils avaient donc l'installation numpy. Le premier exemple qui n'a pas importé numpy s'exécute correctement lors du test de la fonction Lambda, mais le second erreur avec le message d'erreur d'origine
Ce guide AWS ne vous raconte pas toute l'histoire. La distribution Amazon Linux n'est pas compatible avec une installation NumPy régulière comme celle de PyPi ou conda-forge.
Je vous suggère de suivre l'un de ces guides ou d'utiliser un fichier zip de l'un de ces dépôts :
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
Ce n'est pas un bogue NumPy, je vais donc fermer le problème.
Merci,
J'apprécie votre réponse. Pour votre information, j'ai pu le faire fonctionner en lançant une instance EC2 avec le système d'exploitation AWS Linux et en y installant les bibliothèques. Tout fonctionnait très bien.
Merci pour l'aide,
Lee
Obtenez Outlook pour iOS https://aka.ms/o0ukef
De : Ralf Gommers [email protected]
Envoyé : samedi 4 mai 2019 06:52
À : numpy/numpy
Copie : Lee James ; Auteur
Objet : Re : [numpy/numpy] Impossible d'importer numpy dans la fonction AWS Lambda (#13465)
Ce guide AWS ne vous raconte pas toute l'histoire. La distribution Amazon Linux n'est pas compatible avec une installation NumPy régulière comme celle de PyPi ou conda-forge.
Je vous suggère de suivre l'un de ces guides ou d'utiliser un fichier zip de l'un de ces dépôts :
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=ZKkVD6L0iXq9wAG929BSTikIAEun9eeS4ZdgUw&e=Q8oY
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=708JPsyiBrAUC0pdCf1QwuLzJ4dEWaunFNusuZ=
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=
Ce n'est pas un bogue NumPy, je vais donc fermer le problème.
—
Vous recevez ceci parce que vous êtes l'auteur du fil.
Répondre à cet e - mail directement, vue sur 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= ou couper le fil 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 Connaissez-vous des astuces liées à python3.7 à ce sujet. J'ai essayé quelques-uns de votre liste de 3.6 et je me retrouve toujours avec le même reproche à propos de la bibliothèque _multiarray. Je dois créer une "couche" AWS car la combinaison dont j'ai besoin (numpy, scipy, pandas) dépasse la taille autorisée d'une seule fonction.
@iceback si votre erreur était similaire à celle que j'avais, qui était No module named 'numpy.core._multiarray_umath'
, cela est dû au fait que numpy n'est pas installé avec le bon système d'exploitation.
AWS lambda va exécuter AWS linux au moment de l'exécution, donc tous les packages installés sur la cible doivent être installés avec le système d'exploitation approprié. Si vous ciblez l'installation numpy
dans un répertoire package
via pip install --target ./package numpy
et que vous exécutez un autre système d'exploitation (tel que macOS), cela échouera car l'installation cible suppose que le Le système d'exploitation ne changera pas de votre système d'exploitation natif.
Pour contourner cela, vous avez deux options :
Je vais devoir revoir toutes les choses que j'ai essayées la semaine dernière, y compris le @korniichuk et github/pbegle et Dieu sait quoi d'autre, mais qui se sont toujours retrouvés au même endroit. Construire numpy sur un EC2 ne va pas bien. Peut-être une mauvaise version de Cython (seulement 0.27 disponible sur aws linux). Pouvez-vous préciser votre #1. Comment passer d'un numpy installé sur une instance à une couche sur Lambda ?
@iceback Ya c'était frustrant quand je l'ai fait pour la première fois, mais c'est tout à fait possible. J'exécute actuellement des fonctions Lambda avec Python 3.7 avec les 3 packages que vous avez mentionnés.
La façon dont j'ai effectué l'étape 1. ci-dessus impliquait de suivre les étapes décrites dans Mise à jour d'une fonction avec des dépendances supplémentaires , décrites ici . Par souci de simplicité, je vais supposer que votre fichier python local s'appelle _pony.py_ et que la fonction lambda_function est invoquée avec la fonction _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
. Votre fichier zip contient maintenant votre code lambda ainsi que les modules python nécessaires, qui ont été installés pour cibler avec un système d'exploitation AWS Linux.**Assurez-vous que votre fonction lambda pointe vers et exécute votre nom de fichier et votre fonction principale, _pony.ride_pony_, s'il ne s'agit pas de la _lambda_function.lambda_handler_ par défaut
Merci beaucoup. Je crois que j'ai une chance ! (Je crois comprendre que le haut du zip doit être "python" pour une couche Lambda, donc je vais l'utiliser au lieu de "package")
Criez ce guide à haute voix et fier ! Je ne sais pas où je suis allé à l'encontre de l'autre suggestion (bien qu'ils soient pour python3.6) mais je suis maintenant de retour au travail sur mon code de fonction. Merci beaucoup.
AWS a également publié une couche qui inclut NumPy et SciPy. Depuis https://aws.amazon.com/blogs/aws/new-for-aws-lambda-use-any-programming-language-and-share-common-components/
_Sur la base des commentaires de nos clients et pour fournir un exemple d'utilisation des couches Lambda, nous publions une couche publique qui comprend NumPy et SciPy, deux bibliothèques scientifiques populaires pour Python. Cette couche prédéfinie et optimisée peut vous aider à démarrer très rapidement avec des applications de traitement de données et d'apprentissage automatique._
Hm, pourrait-il y avoir trop de documentation AWX ? ;)
Le 23 octobre 2019, à 4 h 29, Ralf Gommers [email protected] a écrit :
AWS a également publié une couche qui inclut NumPy et SciPy. Depuis 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/
Sur la base des commentaires de nos clients et pour fournir un exemple d'utilisation des couches Lambda, nous publions une couche publique qui comprend NumPy et SciPy, deux bibliothèques scientifiques populaires pour Python. Cette couche prédéfinie et optimisée peut vous aider à démarrer très rapidement avec des applications de traitement de données et d'apprentissage automatique.—
Vous recevez ceci parce que vous avez été mentionné.
Répondre à cet e - mail directement, voir sur GitHub https://github.com/numpy/numpy/issues/13465?email_source=notifications&email_token=AACY7PDHEVUY6IGQ6IXVXPLQQARRNA5CNFSM4HKX25D2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECA5ACQ#issuecomment-545378314 ou désabonnement https://github.com/notifications/unsubscribe- auth/AACY7PFK3DUQOBMT5QA2ID3QQARRNANCNFSM4HKX25DQ .
Ce qui a fonctionné pour moi a été d'utiliser une version Linux de la bibliothèque numpy (j'utilise macOS). Je suis allé sur https://pypi.org/project/numpy/#files et j'ai téléchargé le fichier .whl dans la version que je cherchais (pour moi, c'était numpy-1.19.0-cp37-cp37m-manylinux1_x86_64.whl) . Ensuite, allez dans le terminal et décompressez-le en faisant 'unzip numpy-1.19.0-cp37-cp37m-manylinux1_x86_64.whl'. Cela devrait vous donner la version numpy qui fonctionnera sur Lambda. Ensuite, compressez tout comme vous le faisiez auparavant et téléchargez-le. En fin de compte, un problème incroyablement frustrant a été résolu assez simplement.
J'ai eu le même problème, la solution qui a fonctionné pour moi est que j'ai désinstallé numpy de mon PC (Windows 7).
que j'ai ajouté une couche dans la fonction aws lambda quelque chose appelé AWSlambda scipy et c'est tout.
J'ai rencontré le même problème avec Windows mais j'ai pu le résoudre par l'une des approches suivantes :
--use-container
, qui a l'explication suivante dans la documentation :Si vos fonctions dépendent de packages qui ont des dépendances compilées en mode natif, utilisez cet indicateur pour créer votre fonction dans un conteneur Docker de type AWS Lambda.
Commentaire le plus utile
Ce guide AWS ne vous raconte pas toute l'histoire. La distribution Amazon Linux n'est pas compatible avec une installation NumPy régulière comme celle de PyPi ou conda-forge.
Je vous suggère de suivre l'un de ces guides ou d'utiliser un fichier zip de l'un de ces dépôts :
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
Ce n'est pas un bogue NumPy, je vais donc fermer le problème.