在Colab上导入Kaggle数据集时出错

时间:2018-08-22 00:57:56

标签: python username google-colaboratory kaggle valueerror

执行以下行时,

!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.

我不知道刚才发生了什么...以前相同的代码行得通。这是我第一次发现这个问题。

7 个答案:

答案 0 :(得分:10)

它突然也停止在这里工作。显然,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

它又开始工作了。

答案 1 :(得分:4)

这个简单的事情在Google Cola上为我完成了。

!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

答案 2 :(得分:1)

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

!pip install kaggle

此处https://github.com/Kaggle/kaggle-api的其他信息和说明。 接下来,该链接指示您使用可以通过kaggle用户在 kaggle.com->我的帐户->创建新API令牌上下载的文件来激活API。该文件是 kaggle.json

下一步,为了将该 kaggle.json 文件上传到colab VM进行激活,您可以先将其上传到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>

我希望这会有所帮助!

答案 3 :(得分:1)

还要检查您的kaggle.json文件的权限。我遇到了同样的错误,因为在运行了不同的kaggle命令之后,我得到了以下警告:

  

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

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

这是我自己的机器(另一个用户是我信任的指导者),因此我使用chown 666 /.../kaggle.json并解决了该问题,但是请小心,并且仅根据您各自的设置授予相应的权限。< / p>

答案 4 :(得分:0)

看起来Colab中的主目录最近从/content更改为/root。可以解决。在路径中使用~来引用HOME而不是对/content进行硬编码。

我已更新this answer中的分步工作流程以反映所做的更改。对不起,麻烦了!

答案 5 :(得分:0)

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左上角的>以获得

  

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

结果

ref,截止日期,类别,奖励,teamCount,userHasEntered digit-recognizer,2030-01-01 00:00:00,Getting Started,Knowledge,2867,False titanic,2030-01-01 00:00:00,Getting Started,Knowledge,11221,False 房屋价格高级回归技术,2030-01-01 00:00:00,入门,知识,4353,真实 imagenet-object-localization-challenge,2029-12-31 07:00:00,Research,Knowledge,40,False 竞争数据科学预测未来销售,2019-12-31 23:59:00,游乐场,荣誉,2780,虚假 两西格玛财经新闻,2019-07-15 23:59:00,精选,“ $ 100,000”,2927,虚假 空中仙人掌识别,2019-07-08 23:59:00,游乐场,知识,377,假 曲线锯,意外的偏见,毒性分类,2019-06-26 23:59:00,精选,“ $ 65,000”,982,虚假 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

答案 6 :(得分:0)

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

只需下载您的比赛数据(在此处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"
相关问题