AWS Lambda Python本地导入与__pycache__打包问题咨询
Python版AWS Lambda模块打包常见问题解答
1. 同级本地模块能否被Lambda运行时访问导入?
能。只要将本地模块(如definitions.py)与Lambda处理程序文件(如lambda_function.py)放在压缩包的根目录下,Lambda运行时就能正常导入使用。Python的模块查找路径默认包含当前工作目录,Lambda会将压缩包解压到运行环境的工作目录中,因此直接使用import definitions即可完成导入,无需依赖Lambda Layers功能。
示例压缩包结构:
lambda_function.py definitions.py
在lambda_function.py中直接调用import definitions就能使用该模块内的函数或变量。
2. 打包时包含__pycache__目录的影响?
- 环境不匹配会触发错误:若开发环境为Windows,Lambda运行环境为AWS Linux,且两者Python版本不一致,
__pycache__中的.pyc字节码与特定操作系统、Python版本绑定,Lambda环境无法识别运行这些字节码,甚至会导致模块导入失败。 - Lambda运行时不会使用你打包的字节码:Lambda首次运行代码时,会自动编译生成适配自身运行环境的
.pyc文件并缓存,完全不依赖你打包的__pycache__内容。 - 无需刻意包含以优化性能:Lambda本身具备代码编译缓存机制,首次冷启动后,后续调用会复用已编译的字节码。打包
__pycache__不仅无增益,还会增大压缩包体积,拖慢上传与解压速度,反而可能延长冷启动时间。
建议打包前删除__pycache__目录,可通过以下命令清理:
- Linux/macOS:
rm -r __pycache__ - Windows:
rmdir /s __pycache__
内容的提问来源于stack exchange,提问作者NeilG
相关产品推荐
相关产品推荐

