在Google Colab中找不到kaggle.json文件

时间:2019-06-29 09:43:34

标签: python google-colaboratory kaggle

我正在尝试将kaggle imagenet对象本地化挑战数据下载到google colab中,以便可以使用它来训练我的模型。 Kaggle使用API​​轻松快速地访问其数据集。 (https://github.com/Kaggle/kaggle-api)但是,在Google colab中调用命令“ kaggle竞赛下载-c imagenet-object-localization-challenge”时,找不到包含我的用户名和api-key的kaggle.json文件。

运行jupyter笔记本时,我的Mac上没有出现此问题,但是由于我想将google的gpu用于我的模型,因此我开始使用google colab。由于kaggle API希望用户名和api-key位于.kaggle目录中的kaggle.json文件中,因此我首先创建了目录.kaggle,然后创建了文件kaggle.json,我在其中写入了用户名和api-键(以下示例未显示我的用户名和api键)。然后,我尝试配置我的json文件的路径,以便kaggle在调用kaggle下载命令时使用。

!pip install kaggle

!mkdir .kaggle
!touch .kaggle/kaggle.json

api_token = {"username":"username","key":"api-key"}

import json
import zipfile
import os
with open('/content/.kaggle/kaggle.json', 'w') as file:
    json.dump(api_token, file)

!chmod 600 /content/.kaggle/kaggle.json
!kaggle config path -p /content

但是,在运行最后一条命令时,出现错误:

IOError: Could not find kaggle.json. Make sure it's located in /root/.kaggle. Or use the environment method.

我的目标是使用以下命令从kaggle获取数据集:

!kaggle competitions download -c imagenet-object-localization-challenge
os.chdir('/content/competitions/imagenet-object-localization-challenge')
for file in os.listdir():
    zip_ref = zipfile.ZipFile(file, 'r')
    zip_ref.extractall()
    zip_ref.close()

我不明白为什么kaggle API无法找到我的json文件。如何在Google colab中使用API​​?

4 个答案:

答案 0 :(得分:6)

您可以在 Kaggle 门户本身中找到您需要放置的 JSON 文件。只需点击“创建新的 API 令牌”,它就会为您提供一个需要放置的 JSON 文件。

enter image description here

答案 1 :(得分:0)

如错误所述,您需要将kaggle.json放在正确的位置。

尝试:

!mv .kaggle /root/

然后再次运行您的代码。

答案 2 :(得分:0)

根据kaggle api documentation,由于google colab环境基于Linux,因此凭据json所查找的位置为~/.kaggle/kaggle.json。 在您的代码段中,您尝试配置path参数,但是它不用于查找凭据json:

  

-路径:将下载文件的文件夹,默认为当前工作目录

因此,适用于google colab环境的完整代码段为:

!mkdir ~/.kaggle
!touch ~/.kaggle/kaggle.json

api_token = {"username":"username","key":"api-key"}

import json

with open('/root/.kaggle/kaggle.json', 'w') as file:
    json.dump(api_token, file)

!chmod 600 ~/.kaggle/kaggle.json

然后进行一些api调用

!kaggle datasets download -d datamunge/sign-language-mnist

答案 3 :(得分:0)

如果您是Windows用户,请将kaggle.json移到.kaggle文件夹中,这样便可以在系统根目录(位于用户名文件夹中)中找到它。