You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器运行Python Lambda项目提示找不到api_utils模块如何解决

问题原因
  • Python模块搜索路径不匹配:Python导入模块时会优先从sys.path记录的路径中查找目标模块,你运行./alpha-api/app.py时,Python默认仅将脚本所在的${LAMBDA_TASK_ROOT}/alpha-api目录加入搜索路径,而api_utils目录存放在上层的${LAMBDA_TASK_ROOT}根目录下,不在搜索路径范围内,因此无法被识别。
  • 依赖安装配置不合理:Dockerfile中pip install添加了--target ./alpha-api参数,会将所有第三方依赖安装到alpha-api子目录下,不符合多Lambda函数共用仓库的架构设计,也可能引发后续其他路径调用依赖的问题。
解决方案

你可以根据自己的场景选择以下任意一种方案解决:

方案1:配置PYTHONPATH环境变量(最便捷,无需修改业务代码)

修改Dockerfile,将项目根目录加入Python模块搜索路径即可,修改后的Dockerfile参考如下:

FROM public.ecr.aws/lambda/python:3.8

COPY . ${LAMBDA_TASK_ROOT}
WORKDIR ${LAMBDA_TASK_ROOT}

# 将项目根目录加入Python模块搜索路径
ENV PYTHONPATH=${LAMBDA_TASK_ROOT}
# 移除原有--target参数,依赖默认安装到系统Python路径,所有层级脚本都可调用
RUN pip install -r ./alpha-api/requirements.txt

修改后重新构建镜像即可正常运行。

方案2:代码中动态添加搜索路径(无需修改Docker配置)

如果不方便调整Dockerfile,可以在app.py的最开头(所有模块导入语句之前)添加以下代码,动态将项目根目录加入搜索路径:

import sys
import os
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

方案3:将公共工具包打包安装(适合长期迭代的项目)

如果api_utils是多个Lambda函数共用的公共工具包,可以在api_utils目录下新增setup.py配置,将其封装为可安装的Python包,在每个Lambda的requirements.txt中添加本地依赖安装声明即可,后续导入逻辑更规范,无需额外调整路径。

内容的提问来源于stack exchange,提问作者picki23

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 06:39:04