次の行を実行するとき、
!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ファイルを検索していなかったようです。コラボノートブック内で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
kaggle.json
ファイルの権限も確認してください。別のkaggleコマンドを実行した後、次の警告が表示されたため、同じエラーが発生しました。
警告:Kaggle APIキーは、このシステム上の他のユーザーが読み取り可能です!これを修正するには、「chmod 600 /...etc/kaggle.json」を実行します
私は彼らが提案したことを実行し、以前と同じアクセス許可に戻すまであなたと同じエラーを受け取りました。
これは自分のマシンです(他のユーザーは私が信頼するメンターです)。したがって、chown 666 /.../kaggle.json
を使用して解決しましたが、注意して、それぞれのセットアップで意味のある権限のみを与えてください。
最初は、.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>
これがお役に立てば幸いです!
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
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"
Colabのホームディレクトリが最近/content
から/root
に変更されたようです。 ~
をハードコーディングするのではなく、パスで/content
を使用してHOMEを参照すると修正されます。
this answer のステップバイステップのワークフローを更新して、変更を反映させました。ご迷惑おかけして申し訳ありません!