AWS Lambda Docker容器ImportModuleError求助:找不到polars模块
问题排查与解决方案
1. 核对Dockerfile中Poetry依赖安装逻辑
Poetry在容器环境中容易出现虚拟环境导致的依赖路径问题,需确认以下配置:
- 强制禁用Poetry虚拟环境生成(容器内无需独立虚拟环境):
ENV POETRY_VIRTUALENVS_CREATE=false - 执行生产环境专属的依赖安装命令,避免开发依赖干扰:
RUN poetry install --only main --no-interaction --no-ansi - 查看Docker构建日志,确认日志中存在
Installing polars (x.y.z)类的安装记录,验证依赖是否被正确拉取。
2. 检查工作目录与文件路径配置
错误提示的"无法导入app模块"实际是app.py中导入polars失败的连锁反应,需确认文件路径是否在Python搜索范围内:
- 确保Dockerfile中正确设置工作目录并复制所有必要文件:
WORKDIR /app COPY pyproject.toml poetry.lock ./ COPY app.py ./ - 若使用AWS Lambda兼容镜像(从测试URL格式判断大概率是此类场景),需将文件复制到镜像默认的模块加载路径
/var/task:WORKDIR /var/task COPY pyproject.toml poetry.lock ./ COPY app.py ./
3. 容器内直接验证依赖与路径
进入运行中的容器,手动排查环境问题:
- 进入容器:
docker exec -it $(docker ps -q --filter name=etl_pipeline) bash - 验证polars是否安装成功:
python -c "import polars; print(polars.__version__)" - 若polars能正常导入,检查Python搜索路径是否包含
app.py所在目录:python -c "import sys; print(sys.path)"
4. 确保Poetry配置文件完整性
必须将poetry.lock与pyproject.toml一同复制到容器中,避免依赖解析偏差:
COPY pyproject.toml poetry.lock ./
仅复制pyproject.toml会导致Poetry重新解析依赖,可能出现版本不兼容或安装失败的情况。
内容的提问来源于stack exchange,提问作者david backx
相关产品推荐
相关产品推荐

