web-dev-qa-db-ja.com

ColabでKaggleデータセットをインポート中にエラーが発生しました

次の行を実行するとき、

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

何が起こったのかわかりません...同じ行が以前はうまく機能していました。この問題を発見したのは初めてです。

5
Alan.L

ここでも突然動作しなくなりました。明らかに、kaggle apiは正しい場所でkaggle.jsonファイルを検索していなかったようです。コラボノートブック内で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

そして再び動き始めました。

12
Edhowler

この簡単なことは、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
6
Marc Moreaux

kaggle.jsonファイルの権限も確認してください。別のkaggleコマンドを実行した後、次の警告が表示されたため、同じエラーが発生しました。

警告:Kaggle APIキーは、このシステム上の他のユーザーが読み取り可能です!これを修正するには、「chmod 600 /...etc/kaggle.json」を実行します

私は彼らが提案したことを実行し、以前と同じアクセス許可に戻すまであなたと同じエラーを受け取りました。

これは自分のマシンです(他のユーザーは私が信頼するメンターです)。したがって、chown 666 /.../kaggle.jsonを使用して解決しましたが、注意して、それぞれのセットアップで意味のある権限のみを与えてください。

1
Cobra

最初は、.jsonファイルをcolab VMにコピーするのに問題がありました。最終的に私にとっては、次のように機能しました:Google Collaboatoryを介して作業する場合、最初にkaggle APIをインストールする必要があります:

!pip install kaggle

詳細情報と手順はこちら https://github.com/Kaggle/kaggle-api 。次に、リンクは、kaggle.com-> My account-> create new API tokenでkaggleユーザーとダウンロードできるファイルで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>

これがお役に立てば幸いです!

1
Ilai Waimann

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、deadline、category、reward、teamCount、userHasEntered digit-recognizer、2030-01-01 00:00:00、Getting Started、Knowledge、2867、False titanic、2030-01-01 00:00:00、Getting Started、知識、11221、偽の家の価格の高度な回帰技術、2030-01-01 00:00:00、入門、知識、4353、真の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、Featured、 "$ 100,000"、2927、False aerial-cactus-identification、2019-07-08 23:59:00、Playground、Knowledge、377、False jigsaw-unintended-bias-in-毒性分類、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、Research、 "$ 5,000"、250、False

1
Partha Sen

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"
0
prosti

Colabのホームディレクトリが最近/contentから/rootに変更されたようです。 ~をハードコーディングするのではなく、パスで/contentを使用してHOMEを参照すると修正されます。

this answer のステップバイステップのワークフローを更新して、変更を反映させました。ご迷惑おかけして申し訳ありません!

0
Bob Smith