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

kja*_*jay 10 python numpy amazon-web-services pandas aws-lambda

目前,我在将库导入到我的 AWS Lambda 函数时遇到问题pandas。我尝试过两种场景。

  • 使用 my 将 pandas 直接安装到一个文件夹中lambda_function并上传压缩文件。

  • 使用上传的 zip 文件创建一个具有以下结构的图层:

- python
    - lib
        - python3.8
            - site-packages
                - all the pandas packages here
Run Code Online (Sandbox Code Playgroud)

lambda_function的只是:

import json
import pandas as pd

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

这是我的错误:

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'
Run Code Online (Sandbox Code Playgroud)

还有其他方法吗?我不想使用 Docker 来完成此任务。谢谢!

kja*_*jay 6

我已经解决了这个问题,感谢这篇文章:

https://korniichuk.medium.com/lambda-with-pandas-fd81aa2ff25e

就我而言,我通常无法通过 pip 安装库,我在 Windows 计算机上。您必须安装 Linux 版本的 pandas 和 numpy。因为我使用的是 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

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