手动认证Kaggle API下载数据集:Azure存放json失效问题求解
问题根源
你写的手动配置代码存在3个核心问题:
read_config_environment方法仅会返回处理后的配置字典,不会将认证信息存储到API实例内部,你调用该方法时没有接收返回值,后续authenticate执行时完全用不到你传入的账号密钥。- 修改实例的
CONFIG_NAME_USER、CONFIG_NAME_KEY属性没有任何作用,这两个是KaggleApi类的内置常量,判断配置是否存在时调用的是类的原始常量值,且默认值本身就是username和key,不需要额外修改。 - 你没有把手动构造的配置字典接入
authenticate的认证流程,默认流程还是会优先读取本地配置文件,找不到就抛出你遇到的IO错误。
可行的修改方案
提供两种适配无本地配置文件场景的方案:
方案1:设置临时环境变量(适配性最高,推荐)
在导入kaggle库前先设置系统环境变量,完全走官方原生认证逻辑,不需要修改API内部属性,Azure环境可正常运行:
import os # 替换为你自己的Kaggle用户名和密钥 os.environ['KAGGLE_USERNAME'] = 'abc' os.environ['KAGGLE_KEY'] = 'xyz' import kaggle api = kaggle.KaggleApi() api.authenticate() # 下载对应数据集 api.competition_download_files('dataset_name')
方案2:手动注入配置字典
如果不想在环境变量中留存认证信息,可以直接给API实例的配置属性赋值,跳过读环境变量和本地文件的步骤:
import kaggle api = kaggle.KaggleApi() # 直接写入配置信息 api.config_data = { api.CONFIG_NAME_USER: 'abc', api.CONFIG_NAME_KEY: 'xyz' } api.authenticate() # 下载对应数据集 api.competition_download_files('dataset_name')
内容的提问来源于stack exchange,提问作者tjaqu787
相关产品推荐
相关产品推荐

