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

Python3.8的AWS Lambda函数导入报错:urllib3与OpenSSL版本不兼容

问题分析与解决方案

核心原因

  1. AWS Lambda Python 3.8运行时内置的OpenSSL版本为1.0.2k,低于urllib3 v2.0要求的1.1.1+标准
  2. 尽管你在Pipfile中指定了urllib3 = "1.26.6",但openai的依赖可能间接拉取了urllib3 v2.x版本,导致版本冲突;且本地虚拟环境的配置无法覆盖Lambda运行时的系统级OpenSSL限制

解决方案

方案1:升级Lambda运行时(推荐)

将Lambda函数的运行时从Python 3.8切换至Python 3.9或更高版本(如Python 3.10):

  • Python 3.9+的Lambda运行时内置OpenSSL 1.1.1及以上版本,完全满足urllib3 v2.x的要求
  • 无需修改依赖配置,直接兼容最新版openai和相关依赖

方案2:锁定依赖版本并重新打包(适用于必须保留Python 3.8的场景)

  1. 修正Pipfile,强制锁定依赖版本
    修改Pipfile内容如下:
    [[source]]
    name = "pypi"
    url = "https://pypi.org/simple"
    verify_ssl = true
    
    [dev-packages]
    
    [packages]
    src = {editable = true, path = "./src"}
    openai = "<1.0"  # 指定兼容urllib3 1.x的openai版本范围
    urllib3 = "~=1.26.6"  # 固定小版本更新,避免自动升级到2.x
    
    [requires]
    python_version = "3.8"
    
  2. 生成锁定文件并重新安装依赖
    执行以下命令确保依赖完全符合配置:
    pipenv lock --clear
    pipenv install --deploy
    
  3. 验证依赖树
    运行pipenv graph确认输出中无urllib3>=2.0的条目,确保openai的依赖未间接升级urllib3
  4. 在兼容环境中打包部署包
    使用Amazon Linux 2系统或Docker模拟Lambda环境进行打包,避免本地系统库不兼容问题:
    # 进入虚拟环境
    pipenv shell
    # 安装依赖到指定目录
    pip install -r <(pipenv requirements) -t ./package
    # 将代码和依赖合并打包
    cp index.py ./package/
    cd package && zip -r ../lambda-deploy.zip .
    

方案3:使用Lambda层隔离依赖

将urllib3==1.26.6和兼容的openai依赖打包为Lambda层,附加到Python 3.8的Lambda函数上,确保运行时优先使用层中的依赖版本,避免与内置环境冲突


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 04:30:11