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

AWS Lambda Docker容器本地Python模块导入失败问题求助

解决AWS Lambda Docker容器中本地模块导入失败问题

针对你遇到的Unable to import module 'app': No module named 'classes'错误,可按以下步骤排查解决:

1. 修正Dockerfile的工作目录与复制逻辑

Lambda运行时的默认工作目录是/var/task,确保你的Dockerfile正确设置并复制所有文件到该目录:

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

# 设置Lambda工作目录
WORKDIR /var/task

# 先安装外部依赖
COPY requirements.txt .
RUN pip install -r requirements.txt --target .

# 复制所有本地代码(包括classes、class2、app.py)
COPY . .

# 指定Lambda入口
CMD ["app.handler"]

注意不要单独复制单个目录,用COPY . .确保所有文件结构完整同步到容器内的/var/task。

2. 确认__init__.py文件位置

确保classes和class2目录下都存在空的__init__.py文件,结构如下:

.
├── app.py
├── classes
│   ├── __init__.py
│   └── email_.py
├── class2
│   ├── __init__.py
│   └── file2.py
└── requirements.txt

缺少该文件会导致Python无法识别为合法包。

3. 手动添加当前目录到Python搜索路径

在app.py的开头添加以下代码,强制将脚本所在目录加入Python的模块搜索路径:

import sys
from pathlib import Path

# 添加当前目录到sys.path
sys.path.append(str(Path(__file__).parent))

# 后续正常导入
from classes.email_ import Email

4. 本地容器内测试导入逻辑

构建镜像后,进入容器手动测试导入是否正常,排除Lambda环境的干扰:

# 构建镜像
docker build -t lambda-local .

# 进入容器bash
docker run -it --rm lambda-local bash

# 切换到Lambda工作目录
cd /var/task

# 测试导入
python -c "from classes.email_ import Email; print('导入成功')"

如果本地测试失败,说明是代码结构问题;如果成功,再部署到Lambda验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 11:33:31