执行以下行时
!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笔记本中使用了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
它又开始工作了。
这个简单的事情在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
最初将.json文件复制到colab VM时遇到问题。最终对我来说,以下工作:通过谷歌实验室工作,首先你需要安装kaggle API:
!pip install kaggle
更多信息和说明https://github.com/Kaggle/kaggle-api。接下来,该链接指示您使用您可以在kaggle.com上的kaggle用户下载的文件激活API - >我的帐户 - >创建新的API令牌。这个文件是kaggle.json。
接下来,为了将此kaggle.json文件上传到colab VM进行激活,您可以先将其上传到Google驱动器(只需将其拖到驱动器中)即可。接下来在colab中输入以下命令以导入您的驱动器:
from google.colab import drive
drive.mount('/content/gdrive')
授权完成后,您可以将文件从驱动器复制到以下内容进行协作:
!cp /content/gdrive/My\ Drive/kaggle.json ~/.kaggle/kaggle.json
最后,希望您能够运行该命令:
!kaggle competitions download -c <competition-name>
我希望这有帮助!
检查kaggle.json
文件的权限。我得到了同样的错误,因为在运行了一个不同的kaggle命令之后,我收到了这个警告:
警告:您的Kaggle API密钥可供该系统上的其他用户读取!要解决此问题,您可以运行'chmod 600 /...etc/kaggle.json'
我运行了他们建议的内容,并且遇到了同样的错误,直到我将权限更改回原来的状态。
这是我自己的机器(另一个用户是我信任的导师),所以我使用chown 666 /.../kaggle.json
并解决了它,但要小心,只根据你的相应设置有意义的权限。
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数字识别器,2030-01-01 00:00:00,入门,知识,2867,False titanic,2030-01-01 00:00:00,入门, Knowledge,11221,False house-prices-advanced-regression-techniques,2030-01-01 00:00:00,Getting Started,Knowledge,4353,True imagenet-object-localization-challenge,2029-12-31 07:00 :00,Research,Knowledge,40,False competitive-data-science-predict-future-sales,2019-12-31 23:59:00,Playground,Kudos,2780,false two-sigma-financial-news,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,虚假的自闭症者 - 2019-fgvc6,2019-06-10 23:59:00,研究,荣誉,75,虚假的自由 - audio-tagging-2019,2019-06-10 11:59:00,研究,“$ 5,000”,250,错误
看起来Colab的主目录最近从/content
改为/root
。在路径中使用~
来引用HOME而不是硬编码/content
将会修复。
我已经更新了this answer中的逐步工作流程以反映更改。抱歉,添麻烦了!
确保你先安装了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"