我尝试使用 aws lambda 函数。我需要使用 lxml python 模块。
当我尝试导入时:
from lxml import html
def lambda_handler(event,context):
return 'okay'
aws 显示一些错误。这里:
{
"errorMessage": "Unable to import module 'lambda_function': cannot import name 'etree' from 'lxml' (/var/task/lxml/__init__.py)",
"errorType": "Runtime.ImportModuleError",
"requestId": "426b7f93-d703-4d7d-9bda-86cbfdf85fe2",
"stackTrace": []
}
当我尝试在本地 PC 上使用 lxml 中的“html”时。该代码仅适用于 python 3.10 版本。它仅适用于 conda 环境和本地 PC,仅在 python-3.10 上运行。
没有任何作用。我能做什么?
谢谢。
发生这种情况是因为
lxml
是一个依赖于操作系统的库。如果您使用 MacBook 或 ubuntu 安装它,您将获得与 Lambda 运行时内使用的操作系统 (Amazon Linux 2) 不兼容的二进制文件。
要解决此问题,您必须生成与 Amazon Linux 2 兼容的二进制文件。
lambci/lambda
(查看此处)requirements.txt
文件复制到基于 Amazon Linux 的容器内
并运行 pip install -r requirements.txt
。然后,您可以将 Docker 容器生成的 python 包复制到主机(您的 PC 或 CI/CD 代理)中,并将其与代码一起压缩到 Lambda。您可以查看 Python 3.11 的示例。在 ECR 中使用图像并将带有代码的 Python 图像上传到 lambda 在此输入图片描述