AWS Lambda运行提示No module named 'joblib'导入错误如何解决
AWS Lambda `No module named 'joblib' 报错解决方案
报错原因
你在代码中导入的joblib、scikit-learn、pandas、awswrangler均不属于AWS Lambda标准运行环境的预装依赖范围,本地开发环境存在这些库不代表Lambda运行时可以识别,因此触发导入失败报错。
解决方法
- 方案1:使用Lambda层(Layer)管理依赖(推荐,可复用给多个函数)
- 准备与你Lambda函数使用的相同Python版本、相同运行架构(x86_64/arm64)一致的Amazon Linux 2环境,执行命令将依赖安装到指定目录:
把命令中的mkdir -p python/lib/python3.x/site-packages pip install joblib scikit-learn pandas awswrangler -t python/lib/python3.x/site-packages3.x替换为你的Lambda实际Python版本号,比如使用Python 3.9就写3.9。
2. 将生成的python文件夹压缩为zip包,上传到AWS控制台的Lambda层功能中。
3. 给你的Lambda函数绑定刚才创建的层即可。 - 方案2:依赖和代码打包一起上传
- 本地在和Lambda匹配的环境下,进入
lambda_function.py所在目录执行依赖安装命令:
pip install joblib scikit-learn pandas awswrangler -t .- 把目录下所有文件打包为zip包,注意不要打包外层目录,要让
lambda_function.py处于zip包的根目录。 - 把zip包上传到Lambda函数代码配置处替换原有代码。
- 本地在和Lambda匹配的环境下,进入
注意事项
- 依赖必须在和Lambda运行架构、Python版本完全一致的环境下安装,避免架构不兼容导致后续触发其他导入错误。
- 打包后的代码+依赖总大小解压后不能超过250MB的Lambda限制,如果超出可以优先使用预编译的Lambda公共层,或者精简不必要的依赖。
内容的提问来源于stack exchange,提问作者justanewb
相关产品推荐
相关产品推荐

