HDX Python API更新后Configuration.create报TypeError错误求助
解决hdx-python-api更新后的TypeError问题
问题详情
之前使用hdx-python-api==5.9.7可正常从Humanitarian Data Exchange获取novel-coronavirus-2019-ncov-cases资源数据,将库更新至最新版本后,运行官方只读配置示例代码时触发如下错误:
Traceback (most recent call last): File "/home/user/dashboard/scripts/jhu.py", line 31, in <module> Configuration.create(hdx_site="prod", user_agent="A_Quick_Example", hdx_read_only=True) File "/home/user/anaconda3/lib/python3.8/site-packages/hdx/api/configuration.py", line 647, in create return cls._create( File "/home/user/anaconda3/lib/python3.8/site-packages/hdx/api/configuration.py", line 607, in _create cls._configuration.setup_session_remoteckan(remoteckan, **kwargs) File "/home/user/anaconda3/lib/python3.8/site-packages/hdx/api/configuration.py", line 471, in setup_session_remoteckan self._session, user_agent = self.create_session_user_agent( File "/home/user/anaconda3/lib/python3.8/site-packages/hdx/api/configuration.py", line 436, in create_session_user_agent session = get_session( File "/home/user/anaconda3/lib/python3.8/site-packages/hdx/utilities/session.py", line 173, in get_session retries = Retry( TypeError: __init__() got an unexpected keyword argument 'allowed_methods'
使用的官方示例代码如下:
from hdx.api.configuration import Configuration from hdx.data.dataset import Dataset Configuration.create(hdx_site='prod', user_agent='A_Quick_Example', hdx_read_only=True) def save(direct): datasets = Dataset.read_from_hdx('novel-coronavirus-2019-ncov-cases') print(datasets.get_date_of_dataset()) resources = Dataset.get_all_resources(datasets) for res in resources: url, path = res.download(folder=direct) print('Resource URL %s downloaded to %s' % (url, path))
解决方案
这个错误的核心原因是hdx-python-api新版本使用了urllib3中Retry类的allowed_methods参数,但当前环境中urllib3版本过低,不支持该参数。
执行以下步骤修复:
- 升级
urllib3到兼容版本:
pip install --upgrade urllib3
- 若升级后仍有问题,可直接指定最低兼容版本(推荐>=1.26.0):
pip install urllib3>=1.26.0
完成后重新运行代码即可正常获取数据。
内容的提问来源于stack exchange,提问作者kostya ivanov
相关产品推荐
相关产品推荐

