在 Colab 上导入 Kaggle 数据集时出错
Error while importing Kaggle dataset on Colab
执行以下行时,
!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.
我不知道刚刚发生了什么...同样的线路以前工作正常。第一次发现这个问题
这里也突然停止工作了。显然,kaggle api 没有在正确的位置搜索 kaggle.json 文件。
因为我在 colab notebook 中使用 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
所以,我只需要move/copy我下载的文件到正确的地方:
!mkdir ~/.kaggle
!cp /content/.kaggle/kaggle.json ~/.kaggle/kaggle.json
它又开始工作了。
最近 Colab 中的主目录似乎从 /content
更改为 /root
。在路径中使用 ~
来引用 HOME 而不是硬编码 /content
将修复。
我已经更新了 中的分步工作流程以反映这些变化。抱歉给您带来麻烦!
最初无法将 .json 文件复制到 colab 虚拟机中。最终对我来说,以下工作:
通过 google colaboratory,首先你需要安装 kaggle API :
!pip install kaggle
这里有更多信息和说明 https://github.com/Kaggle/kaggle-api。
接下来,link 指示您使用一个文件激活 API,您可以在 kaggle.com -> 我的帐户 -> 创建新的 [=36] 上与你的 kaggle 用户一起下载=]令牌。此文件是 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>
希望对您有所帮助!
我在 Google 可乐上做了这个简单的事情。
!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
还要检查 kaggle.json
文件的权限。我得到了同样的错误,因为在 运行 一个不同的 kaggle 命令之后,我收到了这个警告:
Warning: Your Kaggle API key is readable by other users on this system! To fix this, you can run 'chmod 600 /...etc/kaggle.json'
我 运行 按照他们的建议进行操作,但在我将权限更改回之前的状态之前遇到了与您相同的错误。
这是我自己的机器(另一个用户是我信任的导师),所以我使用了 chown 666 /.../kaggle.json
并解决了它,但要小心并且只根据您各自的设置授予权限.
five
简单步骤:
第一步:
导入驱动器
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 -> My account -> create
第 3 步:
上传 kaggle.json
文件。
点击Colab左上角的>
获取
panel
-> Files -> UPLOAD
第 4 步:
将文件复制到 Colab
!cp /your path/kaggle.json ~/.kaggle/kaggle.json
第 5 步:
修复警告
Your Kaggle API key is readable by other users on this system!
!chmod 600 /root/.kaggle/kaggle.json
测试
!pip install kaggle
import kaggle
!kaggle competitions list --csv
结果
ref、截止日期、类别、奖励、teamCount、userHasEntered
数字识别器,2030-01-01 00:00:00,入门,知识,2867,错误
泰坦尼克号,2030-01-01 00:00:00,入门,知识,11221,错误
house-prices-advanced-regression-techniques,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,Playground,Kudos,2780,False
two-sigma-financial-news,2019-07-15 23:59:00,Featured,"$100,000",2927,False
空中仙人掌识别,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,Research,Kudos,75,False
freesound-audio-tagging-2019,2019-06-10 11:59:00,研究,"$5,000",250,False
确保先安装了 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"
执行以下行时,
!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.
我不知道刚刚发生了什么...同样的线路以前工作正常。第一次发现这个问题
这里也突然停止工作了。显然,kaggle api 没有在正确的位置搜索 kaggle.json 文件。 因为我在 colab notebook 中使用 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
所以,我只需要move/copy我下载的文件到正确的地方:
!mkdir ~/.kaggle
!cp /content/.kaggle/kaggle.json ~/.kaggle/kaggle.json
它又开始工作了。
最近 Colab 中的主目录似乎从 /content
更改为 /root
。在路径中使用 ~
来引用 HOME 而不是硬编码 /content
将修复。
我已经更新了
最初无法将 .json 文件复制到 colab 虚拟机中。最终对我来说,以下工作: 通过 google colaboratory,首先你需要安装 kaggle API :
!pip install kaggle
这里有更多信息和说明 https://github.com/Kaggle/kaggle-api。 接下来,link 指示您使用一个文件激活 API,您可以在 kaggle.com -> 我的帐户 -> 创建新的 [=36] 上与你的 kaggle 用户一起下载=]令牌。此文件是 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>
希望对您有所帮助!
我在 Google 可乐上做了这个简单的事情。
!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
还要检查 kaggle.json
文件的权限。我得到了同样的错误,因为在 运行 一个不同的 kaggle 命令之后,我收到了这个警告:
Warning: Your Kaggle API key is readable by other users on this system! To fix this, you can run 'chmod 600 /...etc/kaggle.json'
我 运行 按照他们的建议进行操作,但在我将权限更改回之前的状态之前遇到了与您相同的错误。
这是我自己的机器(另一个用户是我信任的导师),所以我使用了 chown 666 /.../kaggle.json
并解决了它,但要小心并且只根据您各自的设置授予权限.
five
简单步骤:
第一步: 导入驱动器
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 -> My account -> create
第 3 步:
上传 kaggle.json
文件。
点击Colab左上角的>
获取
panel
-> Files -> UPLOAD
第 4 步: 将文件复制到 Colab
!cp /your path/kaggle.json ~/.kaggle/kaggle.json
第 5 步: 修复警告
Your Kaggle API key is readable by other users on this system!
!chmod 600 /root/.kaggle/kaggle.json
测试
!pip install kaggle
import kaggle
!kaggle competitions list --csv
结果
ref、截止日期、类别、奖励、teamCount、userHasEntered 数字识别器,2030-01-01 00:00:00,入门,知识,2867,错误 泰坦尼克号,2030-01-01 00:00:00,入门,知识,11221,错误 house-prices-advanced-regression-techniques,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,Playground,Kudos,2780,False two-sigma-financial-news,2019-07-15 23:59:00,Featured,"$100,000",2927,False 空中仙人掌识别,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,Research,Kudos,75,False freesound-audio-tagging-2019,2019-06-10 11:59:00,研究,"$5,000",250,False
确保先安装了 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"