brew install python
para instalar python 3.7.3pip install numpy --target .
Entonces puedo ejecutar mi código localmente y no tengo problemas. Soy pandas, matplotlib, boto3 y mpld3 para organizar y mostrar datos en una tabla AWS DDB con gráficos matplotlib que mpld3 convierte en html. numpy parece ser necesario para pandas, y cada vez que intento instalar estas bibliotecas en un directorio de destino para que puedan ejecutarse en una función lambda, de acuerdo con https://docs.aws.amazon.com/lambda/latest/dg/lambda -python-how-to-create-deployment-package.html , aparece el siguiente error:
```IMPORTANTE: ¡LEA ESTO PARA CONSEJOS SOBRE CÓMO RESOLVER ESTE PROBLEMA!
Error al importar el módulo de extensión numpy multiarray. Más
probablemente esté intentando importar una compilación fallida de numpy.
Aquí está cómo proceder:
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.
El error original era: ningún módulo llamado 'numpy.core._multiarray_umath'
FIN ID de solicitud: 2fc65f50-420d-441b-930c-665b1c8ab3ea
INFORME RequestId: 2fc65f50-420d-441b-930c-665b1c8ab3ea Duración: 0,85 ms Duración facturada: 100 ms Tamaño de memoria: 128 MB Memoria máxima utilizada: 40 MB ```
Para aislar el problema, volví a intentar lo anterior con:
def main(event, context):
a = 100
print(a)
return
y
import numpy as np
def main(event, context):
a = np.array(100)
print(a)
return
Ambos archivos se comprimieron en un directorio package
que contenía una instalación específica de numpy según https://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment- paquete.html. Después de comprimir, los archivos tenían ~ 16 MB, por lo que tenían la instalación numpy. El primer ejemplo que no importó numpy funciona bien al probar la función Lambda, pero el segundo error con el mensaje de error original
Esa guía de AWS no le cuenta toda la historia. La distribución de Amazon Linux no es compatible con una instalación normal de NumPy como PyPi o conda-forge.
Le sugiero que siga una de estas guías o use un archivo zip de uno de estos repositorios:
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-con-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
Este no es un error de NumPy, así que cerraré el problema.
Gracias,
Le agradezco su respuesta. Para su información, pude hacerlo funcionar iniciando una instancia EC2 con el sistema operativo Linux de AWS e instalé las bibliotecas allí. Todo funcionó muy bien.
Gracias por la ayuda,
Sotavento
Obtenga Outlook para iOS https://aka.ms/o0ukef
De: Ralf Gommers [email protected]
Enviado: sábado, 4 de mayo de 2019 6:52 a. m.
Para: numpy/numpy
CC: Lee James; Autor
Asunto: Re: [numpy/numpy] No se puede importar numpy en la función AWS Lambda (#13465)
Esa guía de AWS no le cuenta toda la historia. La distribución de Amazon Linux no es compatible con una instalación normal de NumPy como PyPi o conda-forge.
Le sugiero que siga una de estas guías o use un archivo zip de uno de estos repositorios:
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 y d = DwMCaQ & c = 0hefKdg9jtsMu47wpF0ovg & r = 2qmZ2aA-JTvfrp24tI1PaA & m = o4NpaNDNU2z8VYtFVRO3Z-KgjOittvdP3EKrsYfomhs y s = jm1X8lQ78YL30-NRN2kXnOGAhMS1LKSowIOFQMCpq5Y & e =
https://github.com/pbegle/aws-lambda-py3.6-pandas-numpy _ -2Dnumpy&d=DwMCaQ&c=0hefKdg9jtsMu47wpF0ovg&r=2qmZ2aA-JTvfrp24tI1PaA&m=o4NpaNDNU2z8VYtFVRO3Z-KgjOittvdP3EKrsYfomhs&s=708JPsyiAUC0pdCf1QwuLFNzMuusakJ4dEWun=eWun
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=
Este no es un error de NumPy, así que cerraré el problema.
—
Usted está recibiendo esto porque usted fue el autor del hilo.
Responder a este correo electrónico directamente, lo ven en 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= o silenciar el hilo 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 ¿Conoce alguna tachuela relacionada con python3.7 en esto? Probé un par de su lista de 3.6 y siempre termino con la misma queja sobre _multiarray lib. Necesito hacer una "capa" de AWS ya que la combinación que necesito (numpy, scipy, pandas) excede el tamaño permitido de una sola función.
@iceback si su error fue similar al que tuve, que fue No module named 'numpy.core._multiarray_umath'
, esto se debe a que no instaló numpy con el sistema operativo correcto.
AWS lambda ejecutará AWS linux en tiempo de ejecución, por lo que cualquier paquete instalado en el destino debe instalarse con el sistema operativo adecuado. Si tiene como objetivo instalar numpy
en un directorio package
a través pip install --target ./package numpy
y está ejecutando otro sistema operativo (como macOS), esto fallará porque la instalación de destino asume que el El sistema operativo no cambiará de su sistema operativo nativo.
Para evitar esto, tienes dos opciones:
Tendré que revisar todas las cosas que probé la semana pasada, que incluían @korniichuk y github/pbegle y Dios sabe qué más, pero siempre terminaban en el mismo lugar. Construir numpy en un EC2 no va bien. Quizás la versión incorrecta de Cython (solo 0.27 disponible en aws linux). ¿Puedes dar más detalles sobre tu número 1? ¿Cómo pasa de un numpy instalado en una instancia a una capa en Lambda?
@iceback Sí , esto fue frustrante cuando lo hice por primera vez, pero definitivamente es posible. Actualmente ejecuto funciones Lambda con Python 3.7 con los 3 paquetes que mencionaste.
La forma en que realicé el paso 1 anterior implicó seguir los pasos descritos en Actualización de una función con dependencias adicionales , que se describe aquí . En aras de la simplicidad, supondré que su archivo python local se llama _pony.py_ y la función lambda se invoca con la función _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
. Su archivo zip ahora contiene su código lambda junto con los módulos de python necesarios, que se instalaron para apuntar con un sistema operativo Linux de AWS.**Asegúrese de que su función lambda apunte y ejecute su nombre de archivo y función principal, _pony.ride_pony_, si no es la función predeterminada _lambda_function.lambda_handler_
Muchas gracias. ¡Creo que tengo una oportunidad! (Tengo entendido que la parte superior del zip tiene que ser "python" para una capa Lambda, así que la usaré en lugar de "paquete")
¡Grita ese cómo hacerlo en voz alta y con orgullo! No estoy seguro de dónde me equivoqué con la otra sugerencia (aunque eran para python3.6), pero ahora volví a trabajar en mi código de función. Gracias una tonelada.
AWS ahora también publicó una capa que incluye NumPy y SciPy. De https://aws.amazon.com/blogs/aws/new-for-aws-lambda-use-any-programming-language-and-share-common-components/
_En función de los comentarios de nuestros clientes, y para brindar un ejemplo de cómo usar Lambda Layers, estamos publicando una capa pública que incluye NumPy y SciPy, dos bibliotecas científicas populares para Python. Esta capa preconstruida y optimizada puede ayudarlo a comenzar muy rápidamente con aplicaciones de procesamiento de datos y aprendizaje automático._
Hm, ¿podría haber demasiada documentación AWX? ;)
El 23 de octubre de 2019, a las 4:29 a. m., Ralf Gommers [email protected] escribió:
AWS ahora también publicó una capa que incluye NumPy y SciPy. De https://aws.amazon.com/blogs/aws/new-for-aws-lambda-use-any-programming-language-and-share-common-components/ https://aws.amazon.com/blogs /aws/nuevo-para-aws-lambda-utilice-cualquier-lenguaje-de-programación-y-comparta-componentes-comunes/
En función de los comentarios de nuestros clientes y para brindar un ejemplo de cómo usar Lambda Layers, estamos publicando una capa pública que incluye NumPy y SciPy, dos bibliotecas científicas populares para Python. Esta capa preconstruida y optimizada puede ayudarlo a comenzar muy rápidamente con el procesamiento de datos y las aplicaciones de aprendizaje automático.—
Estás recibiendo esto porque te mencionaron.
Responder a este correo electrónico directamente, visualizarla en GitHub https://github.com/numpy/numpy/issues/13465?email_source=notifications&email_token=AACY7PDHEVUY6IGQ6IXVXPLQQARRNA5CNFSM4HKX25D2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECA5ACQ#issuecomment-545378314 , o darse de baja https://github.com/notifications/unsubscribe- autenticación/AACY7PFK3DUQOBMT5QA2ID3QQARRNANCNFSM4HKX25DQ .
Lo que funcionó para mí fue usar una versión de Linux de la biblioteca numpy (uso macOS). Fui a https://pypi.org/project/numpy/#files y descargué el archivo .whl en la versión que estaba buscando (para mí, era numpy-1.19.0-cp37-cp37m-manylinux1_x86_64.whl) . A continuación, vaya a la terminal y descomprímala haciendo 'unzip numpy-1.19.0-cp37-cp37m-manylinux1_x86_64.whl'. Esto debería darle la versión numpy que funcionará en Lambda. Luego, comprima todo como lo estaba haciendo antes y cárguelo. Al final, un problema increíblemente frustrante se resolvió de manera bastante simple.
Tuve el mismo problema, la solución que funcionó para mí es que desinstalé numpy de mi PC (Windows 7).
luego agregué una capa en la función aws lambda algo llamado AWSlambda scipy y eso es todo.
Me encontré con el mismo problema con Windows, pero pude resolverlo mediante cualquiera de los siguientes enfoques:
--use-container
, que tiene la siguiente explicación en los documentos :Si sus funciones dependen de paquetes que tienen dependencias compiladas de forma nativa, use esta marca para crear su función dentro de un contenedor Docker similar a AWS Lambda.
Comentario más útil
Esa guía de AWS no le cuenta toda la historia. La distribución de Amazon Linux no es compatible con una instalación normal de NumPy como PyPi o conda-forge.
Le sugiero que siga una de estas guías o use un archivo zip de uno de estos repositorios:
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-con-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
Este no es un error de NumPy, así que cerraré el problema.