Boto3启动报错TypeError:deprecated()收到意外参数‘name’求助
解决Boto3导入时的TypeError(OpenSSL.utils.deprecated()意外关键字参数'name')
这个问题我之前踩过坑,大概率不是Boto3本身的问题,而是pyopenssl版本不兼容导致的——你看到的错误是因为某个依赖库在调用OpenSSL.utils.deprecated()时传入了name参数,但当前安装的pyopenssl新版本已经移除了这个参数的支持。
试试下面的步骤解决:
检查当前pyopenssl版本
先确认你当前安装的pyopenssl版本:pip show pyopenssl如果版本是23.2.0及以上,基本可以确定就是这个版本的兼容性问题。
降级pyopenssl到兼容版本
安装一个保留name参数支持的旧版本,比如23.1.1:pip install pyopenssl==23.1.1 --force-reinstall加上
--force-reinstall是为了确保彻底覆盖现有版本,避免残留文件干扰。(可选)同步调整cryptography版本
pyopenssl依赖cryptography库,如果降级后还是报错,可能需要同步调整cryptography的版本:pip install cryptography==39.0.1 --force-reinstall这个版本和pyopenssl 23.1.1是经过验证的兼容组合。
终极方案:用虚拟环境隔离依赖
如果Ubuntu 22.04系统自带的全局Python包和你安装的包存在冲突,建议创建独立的虚拟环境来运行Boto3:# 创建虚拟环境 python3 -m venv boto3_venv # 激活虚拟环境 source boto3_venv/bin/activate # 安装Boto3(会自动拉取兼容的依赖版本) pip install boto3在这个隔离环境里运行代码,就能避开全局包的冲突问题了。
内容的提问来源于stack exchange,提问作者Neetesshhr
相关产品推荐
相关产品推荐

