【问题标题】:Error while importing Kaggle dataset on Colab在 Colab 上导入 Kaggle 数据集时出错
【发布时间】:2019-01-28 05:23:48
【问题描述】:

执行以下行时,

!pip install kaggle
!kaggle competitions download -c dogs-vs-cats -p /content/

我收到以下错误消息,

Traceback (most recent call last):
File "/usr/local/bin/kaggle", line 7, in <module>
from kaggle.cli import main
File "/usr/local/lib/python3.6/dist-packages/kaggle/__init__.py", line 23, in <module>
api.authenticate()
File "/usr/local/lib/python3.6/dist-packages/kaggle/api/kaggle_api_extended.py", line 109, in authenticate
self._load_config(config_data)
File "/usr/local/lib/python3.6/dist-packages/kaggle/api/kaggle_api_extended.py", line 151, in _load_config
raise ValueError('Error: Missing %s in configuration.' % item)
ValueError: Error: Missing username in configuration.

我不知道刚刚发生了什么...之前同样的行运行良好。第一次发现这个问题。

【问题讨论】:

    标签: python google-colaboratory valueerror kaggle


    【解决方案1】:

    确保您首先安装了 kaggle api:pip install kaggle。 然后从https://www.kaggle.com/kaggle_user_name/account 获取您的 API 令牌:

    只需下载您的比赛数据(在这里dogs-vs-cats-redux-kernels-edition

    ! touch /root/.kaggle/kaggle.json
    ! chmod 600 /root/.kaggle/kaggle.json
    ! echo '{"username":"kaggle_user_name","key":"0000000000000000000000000000000000"}' >> /root/.kaggle/kaggle.json
    ! kaggle competitions download -c "dogs-vs-cats-redux-kernels-edition"
    

    【讨论】:

      【解决方案2】:

      five简单步骤:

      第 1 步: 导入驱动

      from google.colab import drive
      drive.mount('/content/gdrive')
      

      https://accounts.google.com/o/oauth2/auth?client_id=xxx获取授权码并在Enter your authorization code:输入授权码

      第 2 步: 下载本地系统中的kaggle.json文件

      kaggle.com -> 我的帐户 -> 创建

      第 3 步: 上传kaggle.json 文件。 点击Colab左上角&gt;获取

      panel -> 文件 -> 上传

      第 4 步: 将文件复制到 Colab

      !cp /your path/kaggle.json ~/.kaggle/kaggle.json
      

      第 5 步: 修复警告

      此系统上的其他用户可以读取您的 Kaggle API 密钥!

      !chmod 600 /root/.kaggle/kaggle.json
      

      测试

      !pip install kaggle
      import kaggle
      !kaggle competitions list --csv
      

      结果

      参考,截止日期,类别,奖励,团队计数,用户已进入 数字识别器,2030-01-01 00:00:00,入门,知识,2867,假 泰坦尼克号,2030-01-01 00:00:00,入门,知识,11221,假 房价高级回归技术,2030-01-01 00:00:00,入门,知识,4353,真 imagenet-object-localization-challenge,2029-12-31 07:00:00,研究,知识,40,假 竞争数据科学预测未来销售,2019 年 12 月 31 日 23:59:00,操场,荣誉,2780,假 两西格玛财经新闻,2019-07-15 23:59:00,精选,“$100,000”,2927,假 空中仙人掌识别,2019-07-08 23:59:00,游乐场,知识,377,假 jigsaw-unintended-bias-in-toxicity-classification,2019-06-26 23:59:00,Featured,"$65,000",982,False inaturalist-2019-fgvc6,2019-06-10 23:59:00,研究,荣誉,75,假 freesound-audio-tagging-2019,2019-06-10 11:59:00,Research,"$5,000",250,False

      【讨论】:

        【解决方案3】:

        这个简单的事情在谷歌可乐上为我做了。

        !echo '{"username":"USERNAME","key":"KEY"}' > ~/.kaggle/kaggle.json
        !kaggle datasets download -d mmoreaux/environmental-sound-classification-50
        

        --

        编辑,可能已更改为:

        !echo '{"username":"USERNAME","key":"KEY"}' > /root/.kaggle/kaggle.json
        !kaggle datasets download -d mmoreaux/environmental-sound-classification-50
        

        【讨论】:

        • 感谢我,它只有在我选择以下目录时才有效。 !echo '{"username":"USERNAME","key":"KEY"}' > /root/.kaggle/kaggle.json
        【解决方案4】:

        同时检查您的kaggle.json 文件的权限。我得到了同样的错误,因为在运行不同的 kaggle 命令后,我得到了这个警告:

        警告:您的 Kaggle API 密钥可以被该系统上的其他用户读取!要解决此问题,您可以运行 'chmod 600 /...etc/kaggle.json'

        我运行了他们的建议,并得到了与您相同的错误,直到我将权限更改回他们以前的权限。

        这是我自己的机器(其他用户是我信任的导师),所以我使用了 chown 666 /.../kaggle.json 并解决了这个问题,但要小心,只根据您各自的设置授予权限。

        【讨论】:

          【解决方案5】:

          最初将 .json 文件复制到 colab 虚拟机时遇到问题。最终对我来说,以下工作: 通过 google colaboratory,首先你需要安装 kaggle API:

          !pip install kaggle
          

          更多信息和说明在这里https://github.com/Kaggle/kaggle-api。 接下来,该链接将指示您使用您的 kaggle 用户在 kaggle.com -> 我的帐户 -> 创建新的 API 令牌 上下载的文件激活 API。这个文件是kaggle.json

          接下来,为了将这个 kaggle.json 文件上传到 colab 虚拟机进行激活,您可以先将其上传到您的 google 驱动器(只需将其拖到驱动器)。接下来在colab中输入以下命令导入你的驱动:

          from google.colab import drive
          drive.mount('/content/gdrive')
          

          授权完成后,您可以将文件从驱动器复制到colab:

          !cp /content/gdrive/My\ Drive/kaggle.json ~/.kaggle/kaggle.json
          

          最后,希望您能够运行命令:

          !kaggle competitions download -c <competition-name>
          

          我希望这会有所帮助!

          【讨论】:

            【解决方案6】:

            它也突然停止在这里工作。显然,kaggle api 没有在正确的位置搜索 kaggle.json 文件。 由于我在 colab 笔记本中使用 kaggle api,因此我正在像这样导入 kaggle.json:

            from googleapiclient.discovery import build
            import io, os
            from googleapiclient.http import MediaIoBaseDownload
            from google.colab import auth
            
            auth.authenticate_user()
            
            drive_service = build('drive', 'v3')
            results = drive_service.files().list(
                    q="name = 'kaggle.json'", fields="files(id)").execute()
            kaggle_api_key = results.get('files', [])
            
            filename = "/content/.kaggle/kaggle.json"
            os.makedirs(os.path.dirname(filename), exist_ok=True)
            
            request = drive_service.files().get_media(fileId=kaggle_api_key[0]['id'])
            fh = io.FileIO(filename, 'wb')
            downloader = MediaIoBaseDownload(fh, request)
            done = False
            while done is False:
                status, done = downloader.next_chunk()
                print("Download %d%%." % int(status.progress() * 100))
            os.chmod(filename, 600)
            

            它工作得很好。但是现在,kaggle api 在这个位置搜索 kaggle.json:

            ~/.kaggle/kaggle.json
            

            所以,我只需将下载的文件移动/复制到正确的位置:

            !mkdir ~/.kaggle
            !cp /content/.kaggle/kaggle.json ~/.kaggle/kaggle.json
            

            它又开始工作了。

            【讨论】:

            • 是的,由于历史原因,我们一直设置$HOME=/content,但最近取消了该设置。如果你只是在上面的 sn-p 中使用filename = os.path.expanduser("~/.kaggle/kaggle.json"),你应该不需要做额外的复制(因为我猜你只需要在一个地方的文件)。
            【解决方案7】:

            看起来 Colab 中的主目录最近从 /content 更改为 /root。在路径中使用 ~ 来引用 HOME 而不是硬编码 /content 将修复。

            我已更新 this answer 中的分步工作流程以反映更改。给您添麻烦了!

            【讨论】:

            • 非常感谢。我会试试这个。谢谢你的好意。
            猜你喜欢
            • 2020-04-14
            • 2018-08-24
            • 2019-10-29
            • 2023-03-26
            • 2018-08-28
            • 2020-04-28
            • 2021-09-15
            • 2022-06-16
            • 2019-01-27
            相关资源
            最近更新 更多