如何让AWS Lambda中的Python代码正确导入相对路径模块?
解决AWS Lambda中Python模块导入问题
核心原因
AWS Lambda的执行上下文默认将部署包的根目录加入Python的sys.path,而你的lambda_handler位于server子目录下,导致模块导入的路径逻辑和本地环境不一致。
可行解决方案
方案1:添加当前目录到sys.path
在aws_lambda_function.py的最开头添加以下代码,把当前文件所在的server目录加入Python的路径搜索列表:
import sys import os sys.path.append(os.path.dirname(os.path.abspath(__file__)))
之后直接使用导入语句即可:
from server_code import process_request
方案2:规范包结构并使用相对导入
- 在
server目录下创建空的__init__.py文件,将server标记为Python包 - 确保Lambda的处理程序配置设置为
server.aws_lambda_function.lambda_handler(格式:包名.模块名.函数名) - 在
aws_lambda_function.py中使用相对导入:
from .server_code import process_request
方案3:使用基于根目录的绝对导入
如果你的部署包根目录下包含server文件夹,直接使用绝对导入:
from server.server_code import process_request
⚠️ 注意:必须确保部署包完整包含server目录及其所有文件,打包时不要遗漏子目录。
打包验证
部署前检查你的ZIP包结构,解压后应该是这样的:
your-deployment-package/ ├─ server/ │ ├─ __init__.py │ ├─ aws_lambda_function.py │ └─ server_code.py
内容的提问来源于stack exchange,提问作者Anson Savage
相关产品推荐
相关产品推荐

