在AWS Lambda的Python运行时里,如果代码里写了import redis却收到模块未识别的报错,本质原因是函数执行环境中不存在对应的redis-py包。Lambda原生运行时只包含标准库,任何第三方依赖都必须随部署包、层或镜像一起提供。
常见触发场景
- 直接上传单文件py代码,本地虽装了redis但没打包
- 使用Lambda层,但层里的site-packages路径不对
- 容器镜像构建时忘记pip install redis
- Python版本与redis-py版本不兼容
使用打包方式解决
在本地与Lambda相同系统的环境下,把依赖装到文件夹再一起压缩上传。以下示例展示如何为Python 3.9打包redis模块:
mkdir build && cd build pip install redis -t . cp ../lambda_function.py . zip -r ../deploy.zip .
上传deploy.zip后,Lambda就能在运行时识别redis模块。
通过Lambda层挂载
也可以把redis放进层,注意层内的目录结构必须是python/lib/python3.9/site-packages。创建层并绑定到函数后,运行时自动将该路径加入sys.path。
验证层路径的代码片段
import sys print(sys.path) import redis print(redis.__version__)
使用容器镜像
若采用容器镜像,在Dockerfile里预装依赖即可避免未识别问题:
FROM public.ecr.aws/lambda/python:3.9
RUN pip install redis
COPY lambda_function.py ${LAMBDA_TASK_ROOT}
CMD [ "lambda_function.handler" ]
检查兼容性与导入写法
确认redis-py支持当前Python版本,且代码中使用正确的导入形式,例如:
# 正确写法,redis是包名不是标签 import redis client = redis.Redis(host='127.0.0.1', port=6379, db=0)
不要把import写成类似<redis>的标签形式,那不是Python语法。按上述方式处理后,AWS Lambda Python运行时中的Redis模块未识别问题通常可以稳定解决。
AWS_LambdaPythonRedis修改时间:2026-07-28 21:03:45