AWS Lambda集成Papermill时出现导入错误:No module named 'rpds.rpds'
AWS Lambda集成Papermill时出现导入错误:No module named 'rpds.rpds'
看起来你遇到的是Lambda层依赖兼容性或者目录结构的问题,我来帮你梳理下可能的解决思路:
问题根源分析
这个错误大概率是因为你在本地(比如macOS)安装的rpds模块包含了针对本地系统编译的二进制文件,而AWS Lambda运行在Linux x86_64环境中,二进制兼容性不匹配;或者安装过程中依赖没有完整安装,导致rpds.rpds这个子模块缺失。解决方案1:用Lambda兼容环境安装依赖(推荐)
你需要在和Lambda一致的Linux环境下安装papermill及其依赖,最方便的方式是用Docker模拟Lambda运行环境:- 先拉取对应Python版本的Lambda官方镜像,比如你用Python 3.10的话:
docker pull public.ecr.aws/lambda/python:3.10 - 运行临时容器,挂载本地的一个目录用来存放安装的依赖:
docker run -v /path/to/your/local/folder:/lambda-layer -it public.ecr.aws/lambda/python:3.10 bash - 在容器内,进入挂载的目录,创建python子目录并安装papermill:
cd /lambda-layer mkdir python pip install papermill -t python/ - 退出容器,把本地的python目录打包成zip,上传作为Lambda层,这样依赖就是完全适配Lambda环境的了。
- 先拉取对应Python版本的Lambda官方镜像,比如你用Python 3.10的话:
解决方案2:检查并修复层的目录结构
确认你打包的zip包根目录就是python文件夹,里面的结构应该是类似python/rpds/、python/papermill/这样,Lambda会自动把这个目录添加到Python的sys.path中。如果你的rpds模块结构有问题,比如rpds文件夹里没有rpds.py或者对应的编译文件,可能需要重新安装确保依赖完整。额外检查点
确保你的Lambda函数使用的Python版本和你安装papermill时用的Python版本完全一致,比如你用Python 3.9安装的依赖,Lambda也得选3.9的运行时。
备注:内容来源于stack exchange,提问作者Chad Goldsworthy
相关产品推荐
相关产品推荐

