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

AWS Lambda运行Python3.7脚本遇urllib3导入错误,求替代方案

问题解决及解释

错误原因

你遇到的问题是Lambda环境中第三方依赖自动升级了urllib3到v2.0版本,但Python 3.7的Lambda运行时内置的OpenSSL版本是1.0.2k-fips,不满足urllib3 v2.0要求的OpenSSL 1.1.1+,从而触发导入错误。注意你代码里用的是Python标准库的urllib.parse,和第三方库urllib3是完全不同的两个库,错误是其他依赖(比如boto3、requests等你可能间接用到的库)引入的urllib3导致的。

快速修复方案

  • 锁定urllib3版本到1.x兼容版:在你的Lambda部署包的requirements.txt中添加一行:

    urllib3<2.0
    

    重新打包部署后,Lambda会强制使用1.x版本的urllib3,避开版本兼容问题。

  • 检查并移除不必要的依赖:如果你的代码只用到了标准库的urllib.parse,没有依赖其他第三方库,那么可以清理部署包,只保留自己的代码,彻底避免第三方依赖带来的版本问题。

替代库选项(非必需)

其实你完全不需要替换标准库的urllib.parse——它属于Python内置模块,不存在版本兼容问题。如果确实需要第三方库实现相同功能,推荐:

  • furl:功能更丰富的URL处理库,支持解析、修改、拼接URL
  • url-normalize:专注于URL标准化处理,包含解析和解码功能

使用示例(以furl为例):

from furl import furl

# 替代urlparse
url = furl("https://example.com/path?key=val")
print(url.host, url.path)

# 替代unquote
decoded_str = furl.unquote("%E4%B8%AD%E6%96%87")

高版本环境正常运行的原因

更高版本的Python(3.8+)Lambda运行时:

  1. 内置的OpenSSL版本已升级到1.1.1及以上,满足urllib3 v2.0的要求;
  2. 默认依赖的版本更适配,不会自动引入不兼容的urllib3版本;
  3. 标准库的urllib.parse模块也有更新,稳定性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 00:12:41