python - 使用 AWS Lambda 导入熊猫时出现 numpy 错误
问题描述
我目前在将库导入pandas
我的 AWS Lambda 函数时遇到问题。我尝试了两种情况。
使用 my 将 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 来完成这项任务。谢谢!
解决方案
我已经解决了这个问题,感谢这篇文章:
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
。如我的问题所示,我使用了我的第一个场景。
推荐阅读
- react-hook-form - react-hook-form:需要验证其中一个字段
- javascript - React 状态不会从 useCallback 中更新
- javascript - 使用类验证 nodejs 模型
- activex - 升级到 C++Builder 11 后创建 ActiveX 控件时访问冲突
- javascript - 过滤器中的节点js异步调用导致404错误
- php - PHPStan 和 Doctrine:$id 永远不会被写入,只会被读取
- python - 图像分类的频谱图
- symfony - Symfony Messenger 不同的消费者用于不同的应用服务器
- r - 不能使用 gsub 更改 colnames 中的某些字符,例如,'?'、'+'、'('
- c - 期望在 C 中使用 gcc 的参数 char