requests-aws4auth 1.3.1中AWS4Auth传参报错,如何解决?
解决requests-aws4auth 1.3.1版本运行报错问题
问题原因
你遇到的TypeError说明当前运行环境中,AWS4Auth的构造函数参数要求与你使用的调用方式不匹配,大概率是环境版本不一致或调用方式不符合旧版本规范导致的。
解决方案
1. 确认实际运行环境的包版本
首先验证脚本实际使用的requests-aws4auth版本是否确实为1.3.1:
在你的脚本开头添加以下代码并运行:
import requests_aws4auth print(requests_aws4auth.__version__)
- 如果输出不是
1.3.1,说明你的Python环境与pip freeze输出的环境不一致(比如混用了全局环境和虚拟环境)。执行以下命令重装指定版本:pip uninstall requests-aws4auth -y pip install requests-aws4auth==1.3.1
2. 检查是否存在命名冲突
确认你的脚本目录下没有名为requests_aws4auth.py的自定义文件,否则会覆盖安装的官方包,导致导入错误。如果有,删除或重命名该文件。
3. 使用1.3.1版本兼容的调用方式
requests-aws4auth 1.3.1的AWS4Auth构造函数支持refreshable_credentials参数,但需确保参数传递正确。将你的代码修改为:
from requests_aws4auth import AWS4Auth from botocore.session import Session credentials = Session().get_credentials() # 显式传递refreshable_credentials、region、service参数 auth = AWS4Auth(refreshable_credentials=credentials, region='eu-west-1', service='es')
4. 验证botocore版本兼容性
如果上述步骤无效,对比同事机器上的botocore版本,安装完全相同的版本:
pip install botocore==<同事的版本号>
内容的提问来源于stack exchange,提问作者Ferdinando Randisi
相关产品推荐
相关产品推荐

