AWS Lambda导入tapo库失败:找不到tapo.tapo模块求排查
可能原因及对应解决步骤
依赖打包不完整
tapo库内部存在嵌套模块引用(如tapo.tapo),若打包时未完整包含库的所有文件,会导致导入失败。
解决:在lambda函数目录下执行pip install -t . tapo,该命令会将tapo库的完整文件直接安装到当前目录,确保tapo文件夹与lambda_function.py同级,且文件夹内包含__init__.py、tapo.py等所有必要子模块文件。Lambda层目录结构错误
Lambda层要求依赖必须放在python/lib/pythonX.X/site-packages/路径下(X.X对应你使用的Python运行时版本,如3.9),直接压缩tapo文件夹会导致Lambda无法识别。
解决:创建目录结构python/lib/python3.9/site-packages/,将tapo文件夹放入其中,再压缩整个python目录为zip包上传作为Lambda层。Python版本不匹配
本地开发使用的Python版本与Lambda运行时版本不一致,可能导致依赖的字节码或模块结构不兼容。
解决:确保Lambda运行时的Python版本(如Python 3.9)与本地开发环境版本完全一致。虚拟环境打包遗漏文件
使用虚拟环境打包时,若未完整复制site-packages中的tapo文件夹,会导致子模块缺失。
解决:激活虚拟环境后,直接从site-packages目录中完整复制tapo文件夹到lambda函数目录,再打包上传。
验证步骤
将上传的Lambda压缩包下载解压,检查:
lambda_function.py与tapo文件夹是否同级tapo文件夹内是否包含所有子文件(可对比本地site-packages/tapo的内容)
内容的提问来源于stack exchange,提问作者justHelloWorld

