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

AWS Lambda容器部署报错:attempted relative import beyond top-level package 求助

AWS Lambda容器部署报错:attempted relative import beyond top-level package 求助

碰到这个问题我太熟了!咱们一步步来排查解决:

问题根源分析

你的Dockerfile把整个source目录复制到了${LAMBDA_TASK_ROOT}/source/,而Lambda的Python运行环境默认只会把${LAMBDA_TASK_ROOT}(也就是/var/task)加入Python的模块搜索路径sys.path。这就导致:

  • main.py实际在/var/task/source/里
  • 当Lambda加载source.main.real_estate_scraper时,main.py里的from real_estate_prices.spiders...导入会去/var/task下找real_estate_prices包,但它实际在/var/task/source/里
  • Python找不到目标包,就抛出了这个导入错误

解决方案(两种任选其一)

方案一:直接将source内容放到Lambda任务根目录(最推荐)

修改Dockerfile,把source下的所有内容直接复制到${LAMBDA_TASK_ROOT},消除嵌套目录的问题:

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

# 复制source下的依赖文件到任务根目录
COPY source/requirements.txt ${LAMBDA_TASK_ROOT}

# 安装依赖
RUN pip install -r requirements.txt

# 复制source下所有内容到任务根目录
COPY source/ ${LAMBDA_TASK_ROOT}/

# 现在main.py在任务根目录,直接指定入口
CMD ["main.real_estate_scraper"]

这样修改后,real_estate_prices包和main.py都在Python的默认搜索路径下,导入问题直接解决。

方案二:保留source目录结构,调整Python路径

如果不想改变目录结构,可以通过设置环境变量或手动添加路径让Python找到source下的包:
修改Dockerfile,添加PYTHONPATH环境变量:

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

COPY source/requirements.txt ${LAMBDA_TASK_ROOT}/source/

RUN pip install -r ${LAMBDA_TASK_ROOT}/source/requirements.txt

COPY source ${LAMBDA_TASK_ROOT}/source/

# 将source目录加入Python模块搜索路径
ENV PYTHONPATH="${LAMBDA_TASK_ROOT}/source"

# 现在Python能直接找到main模块,调整入口指向
CMD ["main.real_estate_scraper"]

或者也可以在main.py开头手动添加路径:

import sys
import os
# 把当前脚本所在目录(source目录)加入搜索路径
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

# 后续导入代码保持不变
from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings
...

额外注意事项

  • 检查你的scrapy.cfg配置文件,确保默认设置指向正确的settings模块:
    [settings]
    default = real_estate_prices.settings
    
  • Scrapy爬虫运行需要一定内存,建议把Lambda容器的内存配置调高一些(比如至少512MB),避免运行时内存不足。

备注:内容来源于stack exchange,提问作者KurczakChrupiacy2

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 09:34:34