New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Unable to import numpy in AWS Lambda function #13465
Comments
To isolate the issue, I retried the above with:
and
Both files were zipped a |
That AWS guide isn't telling you the whole story. The Amazon Linux distribution isn't compatible with a regular NumPy install like from PyPi or conda-forge. I suggest you follow one of these guides or use a zip file from one of these repos: This is not a NumPy bug, so I'll close the issue. |
@rgommers Do you know of any python3.7 related tacks on this. I've tried a couple from your list of 3.6 and always end up with the same gripe about the _multiarray lib. I need to make an AWS "layer" since the combination I need (numpy,scipy,pandas) exceeds size allowance of a single function. |
@iceback if your error was similar to what I had, which was AWS lambda is going to run AWS linux at runtime, so any target-installed packages should be installed with the proper OS. If you target install To get around this, you have two options:
|
I'll have to revisit all the things I tried last week which included the @korniichuk and github/pbegle and lord knows what else but always ended up in same spot. Building numpy on an EC2 is not going well. Perhaps wrong Cython version (only 0.27 available on aws linux). Can you elaborate on your #1. How do you get from an installed numpy on one instance to a layer on Lambda? |
@iceback Ya this was frustrating when I first did it, but it is definitely possible. I currently run Lambda functions with Python 3.7 with the 3 packages you mentioned. How I performed step 1. above involved following the steps outlined in Updating a Function with Additional Dependencies, described here. For simplicity sake, I am going to assume that your local python file is named pony.py and the lambda_function is invoked with the ride_pony function.
**Ensure that your lambda function points to & executes your filename and main function, pony.ride_pony, if it is not the default lambda_function.lambda_handler |
Thank you very much. I believe I have a shot! (My understanding is that the top of the zip has to be "python" for a Lambda layer so I'll use that instead of "package") |
Shout that how-to out loud and proud! Not sure where I went afoul of the other suggestion (though they were for python3.6) but I'm now back to working on my function code. Thanks a ton. |
AWS now also published a layer that includes NumPy and SciPy. From https://aws.amazon.com/blogs/aws/new-for-aws-lambda-use-any-programming-language-and-share-common-components/ Based on our customer feedback, and to provide an example of how to use Lambda Layers, we are publishing a public layer which includes NumPy and SciPy, two popular scientific libraries for Python. This prebuilt and optimized layer can help you start very quickly with data processing and machine learning applications. |
Hm, could there be too much AWX documentation? ;)
… On Oct 23, 2019, at 4:29 AM, Ralf Gommers ***@***.***> wrote:
AWS now also published a layer that includes NumPy and SciPy. From 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/>
Based on our customer feedback, and to provide an example of how to use Lambda Layers, we are publishing a public layer which includes NumPy and SciPy, two popular scientific libraries for Python. This prebuilt and optimized layer can help you start very quickly with data processing and machine learning applications.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub <#13465?email_source=notifications&email_token=AACY7PDHEVUY6IGQ6IXVXPLQQARRNA5CNFSM4HKX25D2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECA5ACQ#issuecomment-545378314>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/AACY7PFK3DUQOBMT5QA2ID3QQARRNANCNFSM4HKX25DQ>.
|
What worked for me was using a Linux version of the numpy library (I use macOS). I went to https://pypi.org/project/numpy/#files and downloaded the .whl file in the version i was looking for (for me, it was numpy-1.19.0-cp37-cp37m-manylinux1_x86_64.whl). Next go to the terminal and unzip it by doing 'unzip numpy-1.19.0-cp37-cp37m-manylinux1_x86_64.whl'. This should give you the numpy version that will work on Lambda. Then, zip everything up as you were doing before and upload it. In the end an incredibly frustrating problem was solved pretty simply. |
I had same problem, the solution that worked for me is that i uninstalled numpy from my pc,(windows 7). |
I ran into the same issue with Windows but was able to solve it by either of the following approaches:
|
AWS provides a layer with Numpy and Scipy. Inside of the lambda console just click Add Layer then AWS Layers and it will come up at the top. |
I'm having the same issue with AWS Data Wrangler + Numpy/Scipy combination. I need Data Wrangler to read Excel files from S3. The problem here is probably the fact that Data Wrangler incorporates Pandas which in turn incorporates its own Numpy... which is incompatible with Numpy from AWS Numpy/Scipy official Layer. |
Use manylinux. Example: |
This solved the error for me. Thank you for replying to such an old thread with your solution! |
deleted python3 on my mac and then
brew install python
to install python 3.7.3Since I am installing to run on AWS Lambda,
pip install numpy --target .
macOS Sierra 10.12.6
the native python 2.7.10 is still installed on my mac
N/A
So I am able to run my code locally and I have no issues. I am pandas, matplotlib, boto3, and mpld3 to organize and display data in an AWS DDB table with matplotlib graphs that mpld3 turns into html. numpy appears to be needed for pandas, and whenever I try to install these libraries to a target directory so they can run in a lambda function, according to https://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html, I get the following error:
The text was updated successfully, but these errors were encountered: