【问题标题】:Can't find kaggle.json file in google colab在谷歌 colab 中找不到 kaggle.json 文件
【发布时间】:2019-11-10 23:32:27
【问题描述】:

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

在我的 mac 上运行 jupyter notebook 时没有遇到这个问题,但是由于我想将 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?

【问题讨论】:

    标签: python google-colaboratory kaggle


    【解决方案1】:

    在单元格中运行此代码以配置环境

    import os
    os.environ["KAGGLE_CONFIG_DIR"] = "/path_to_your_kaggle.json_file"
    

    他们已经编写了他们的 GitHub 存储库,您可以配置 kaggle.json 的环境错误也出现在 colab 或 windows 中:

    您可以定义一个 shell 环境变量 KAGGLE_CONFIG_DIR 来将此位置更改为 $KAGGLE_CONFIG_DIR/kaggle.json(在 Windows 上它将是 %KAGGLE_CONFIG_DIR%\kaggle.json)。

    -- Refer this

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

          根据kaggle api documentation,凭据json 正在寻找的位置是~/.kaggle/kaggle.json,因为google colab 环境是基于Linux 的。 在您的 sn-p 中您尝试配置 path 参数,但它不用于查找凭证 json:

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

          因此,google colab 环境的完整工作 sn-p 将是:

          !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
          

          【讨论】:

          • 这是迄今为止最好的答案,应该是公认的答案!
          【解决方案5】:

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

          试试:

          !mv .kaggle /root/
          

          然后再次运行您的代码。

          【讨论】:

            猜你喜欢
            • 2020-04-10
            • 2019-12-14
            • 2021-04-20
            • 2021-04-23
            • 2021-05-14
            • 2021-04-18
            • 1970-01-01
            • 1970-01-01
            • 2021-11-07
            相关资源
            最近更新 更多