AWS Lambda(Python3.11)中lxml.etree导入失败的解决方法问询
解决AWS Lambda中Python 3.11导入lxml的问题
你遇到的导入错误如下:
{ "errorMessage": "Unable to import module 'lambda_function': cannot import name 'etree' from 'lxml' (/opt/python/lib/python3.11/site-packages/lxml/__init__.py)", "errorType": "Runtime.ImportModuleError", "requestId": "9a37109e-1cc3-4800-8a4e-c70c5c7bfe20", "stackTrace": [] }
确实可以在AWS环境内构建适配Lambda的lxml层,以下是具体解决步骤:
方法一:使用AWS Cloud9环境构建(推荐,无需额外管理EC2)
- 创建Cloud9环境,选择Amazon Linux 2023实例(匹配Python 3.11的Lambda运行时环境)
- 在Cloud9终端执行以下命令安装依赖和lxml:
- 安装系统编译依赖和Python 3.11:
sudo dnf install -y python3.11 python3.11-pip gcc libxml2-devel libxslt-devel - 创建Lambda层要求的目录结构:
mkdir -p lxml-layer/python/lib/python3.11/site-packages - 将lxml安装到指定目录:
python3.11 -m pip install lxml -t lxml-layer/python/lib/python3.11/site-packages/ - 进入目录并打包成zip:
cd lxml-layer && zip -r lxml-layer.zip .
- 安装系统编译依赖和Python 3.11:
- 在AWS控制台上传这个
lxml-layer.zip作为Lambda层,然后将该层关联到你的Python 3.11 Lambda函数
方法二:使用EC2实例构建
- 启动一台Amazon Linux 2023 EC2实例
- 执行和Cloud9相同的命令完成lxml的安装与打包
- 将打包好的zip文件下载到本地,再上传为Lambda层
验证步骤
关联层后,在Lambda函数中测试导入:
from lxml import etree def lambda_handler(event, context): # 测试代码 root = etree.Element("root") return {"status": "success", "message": "lxml imported successfully"}
内容的提问来源于stack exchange,提问作者Kushan Manahara
相关产品推荐
相关产品推荐

