使用AWS Lambda导入pandas时出现numpy错误

bnl4lu3b  于 2023-10-14  发布在  其他
关注(0)|答案(3)|浏览(150)

我目前在将库pandas导入到AWS Lambda Function时遇到问题。我试过两种情况。

  • 将pandas直接安装到我的lambda_function的一个文件夹中,并上传压缩文件。
  • 使用以下结构的已上传zip文件创建层:
- python
    - lib
        - python3.8
            - site-packages
                - all the pandas packages here

我的lambda_function只是:

import json
import pandas as pd

def lambda_handler(event, context):
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }

这是我的错误:

START RequestId: 9e27641e-587b-4be2-b9be-c9be85007f9e Version: $LATEST
[ERROR] Runtime.ImportModuleError: Unable to import module 'main': Unable to import required dependencies:
numpy: 

IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!

Importing the numpy C-extensions failed. This error can happen for
many reasons, often due to issues with your setup or how NumPy was
installed.

We have compiled some common reasons and troubleshooting tips at:

    https://numpy.org/devdocs/user/troubleshooting-importerror.html

Please note and check the following:

  * The Python version is: Python3.8 from "/var/lang/bin/python3.8"
  * The NumPy version is: "1.21.1"

and make sure that they are the versions you expect.
Please carefully study the documentation linked above for further help.

Original error was: No module named 'numpy.core._multiarray_umath'

还有其他办法吗?我不想使用Docker来完成这个任务。谢谢你,谢谢

8fq7wneg

8fq7wneg1#

我已经解决了这个问题,感谢这篇文章:
https://korniichuk.medium.com/lambda-with-pandas-fd81aa2ff25e
在我的情况下,我不能通过pip正常安装库,我在windows机器上。你必须安装pandas和numpy的Linux版本。因为我使用的是python 3.8,所以我安装了以下版本:

  • numpy-1.21.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl
  • pandas-1.3.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

下载完软件包后,我替换了最初通过pip install pandas安装的pandas和numpy文件夹。我使用了我的第一个场景,如我的问题所示。

1dkrff03

1dkrff032#

只是为了补充,这里是一些非常有用的库作为层的集合
AWSome Lambda Layers
向贡献者致敬!

ipakzgxi

ipakzgxi3#

转到Lambda控制台,单击Lambda底部的“Add Layers”,选择AWS Layers,然后单击AWSSDKPandas-Python311(或与您的Python版本相关联的层,因为我使用的是Python3.11)
你将能够运行pandas,以及它加载的任何包,比如numpy。

相关问题