web-dev-qa-db-fra.com

aws - "Impossible d'importer le 'processus' du module: /var/task/numpy/core/multiarray.so: en-tête ELF non valide"

En utilisant aws lambda, le message d'erreur suivant s'affiche lorsque le script est exécuté avec le module numpy:

Impossible d'importer le module 'processus': /var/task/numpy/core/multiarray.so: En-tête ELF non valide

Ce problème est-il lié à Numpy lui-même ou à Numpy spécifiquement sur aws lambda. Qu'est-ce qu'un en-tête ELF non valide?

Modifier:

Je crois que cela est lié à l'exécution de code natif, comme indiqué dans cette réponse "En-tête ELF non valide" lors de l'utilisation du module nodejs "ref" sur AWS Lambda

14
Michael

Le problème concerne le fichier multiarray.so qui était conforme à l'architecture de mon ordinateur local. Faites tourner une instance ec2 et créez votre virtualenv avec les dépendances nécessaires. Cela entraînera la compilation avec l'architecture correcte utilisée par Aws lambda. Ensuite, téléchargez votre virtualenv depuis l’instance ec2 et utilisez-le pour lambda. 

15
Michael

J'ai eu une erreur similaire: 

/var/task/bcrypt/_bcrypt.so: undefined symbol: PyInt_FromLong

La réponse précédente ne semblait pas fonctionner pour mon Pyhon: 3.6 lambda.

J'ai réussi à utiliser cet article: https://medium.com/i-like-big-data-and-i-cannot-lie/how-to-create-an-aws-lambda-python-3-6- deployment-package-using-docker-d0e847207dd6

0
Alexandre Hamon