AWS Lambda部署Python脚本遇Runtime.ImportModuleError问题求助
解决AWS Lambda中无法导入
jsonpickle的问题 这问题我碰到过好多次啦——AWS Lambda的默认Python运行环境只自带了官方标准库,你本地安装的jsonpickle这种第三方依赖,不手动打包进部署包的话,Lambda肯定找不到它!别担心,给你两种靠谱的解决办法:
方法一:将依赖与代码一起打包上传
这种方法适合单个Lambda函数使用依赖的场景,步骤很清晰:
- 本地创建一个空目录(比如
lambda_deploy),进入该目录 - 执行命令安装
jsonpickle到当前目录:pip install jsonpickle -t . - 把你的
testsdk.py文件复制到这个目录下 - 选中目录内的所有文件(注意不要选目录本身),打包成ZIP文件
- 登录AWS控制台,找到你的Lambda函数,在"代码"部分上传这个ZIP包,替换原有的代码
方法二:使用Lambda层管理依赖(推荐多函数共用依赖时用)
如果以后有多个Lambda函数都需要用到jsonpickle,用层来统一管理更方便:
- 本地创建一个目录(比如
jsonpickle_layer),在里面再创建一个python子目录(Lambda层要求Python依赖必须放在这个路径下) - 进入
python子目录,执行命令安装依赖:pip install jsonpickle -t . - 返回
jsonpickle_layer目录,把python目录打包成ZIP文件(ZIP根目录直接是python文件夹,不要包含外层的jsonpickle_layer) - 登录AWS控制台,进入Lambda的"层"管理页面,点击"创建层",上传这个ZIP包,运行时选择Python 3.7
- 回到你的Lambda函数,在"层"选项卡中点击"添加层",选择刚才创建的层并保存
额外注意事项
- 确保你的
testsdk.py中导入语句是import jsonpickle,没有拼写错误 - 因为你用的是Python 3.7,Lambda的3.7运行环境是x86架构,所以本地在x86系统(比如Windows、Linux x86、Mac Intel)下安装的依赖是兼容的,不用额外处理架构问题
内容的提问来源于stack exchange,提问作者grand2019
相关产品推荐
相关产品推荐

