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

AWS Lambda部署Python-Selenium脚本遇模块找不到错误求助

解决AWS Lambda部署Python-Selenium脚本的依赖问题

一、修正Lambda层的目录结构

你当前的依赖层结构不符合Lambda的要求,Lambda要求Python依赖必须放在python/lib/pythonX.X/site-packages/(X.X对应你使用的Lambda运行时Python版本)路径下,而非Lib开头。正确的zip结构应该是:

python.zip
└── python
    └── lib
        └── python3.8
            └── site-packages
                ├── selenium/
                ├── bs4/
                ├── firebase_admin/
                └── 其他依赖包...

打包时务必保证python文件夹是zip的根目录,不能嵌套在其他文件夹中。

二、安装Linux兼容的依赖包

Windows环境安装的依赖包含Windows平台的编译文件,无法在Lambda的Linux运行时正常工作,必须在Linux环境(或用Docker模拟Lambda运行环境)中安装:

  1. 拉取对应Python版本的Lambda镜像:
docker run -v "$PWD":/var/task public.ecr.aws/sam/build-python3.8:latest /bin/bash
  1. 在容器内将依赖安装到指定目录:
pip install selenium beautifulsoup4 firebase-admin -t python/lib/python3.8/site-packages/
  1. 退出容器后,将python文件夹打包成zip,作为依赖层上传至Lambda。

三、配置Chrome与Chromedriver

Lambda运行时默认没有Chrome浏览器,需要部署兼容的无头Chrome和对应版本的Chromedriver:

  • 可以直接通过pip安装适配Lambda的包:pip install chrome-aws-lambda chromedriver-binary-lambda,并将这些包包含在依赖层中。
  • 在脚本中配置Chrome无头模式选项:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

def lambda_handler(event, context):
    chrome_options = Options()
    chrome_options.add_argument("--headless")
    chrome_options.add_argument("--no-sandbox")
    chrome_options.add_argument("--disable-dev-shm-usage")
    chrome_options.add_argument("--disable-gpu")
    # 适配chrome-aws-lambda的路径
    driver = webdriver.Chrome(options=chrome_options)
    # 你的业务逻辑代码
    driver.quit()

四、部署验证步骤

  • 创建两个Lambda层:一个存放所有Python依赖,一个存放Chrome及Chromedriver(如果手动部署的话)。
  • 在Lambda函数配置页面,关联这两个层,确保运行时Python版本与依赖安装的版本完全一致(比如Python3.8)。
  • 上传你的脚本文件,检查import语句是否正确(如import selenium、from bs4 import BeautifulSoup)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 04:26:30