Lors de l'exécution des lignes suivantes,
!pip install kaggle
!kaggle competitions download -c dogs-vs-cats -p /content/
J'ai eu les messages d'erreur suivants,
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.
Je ne sais pas ce qui vient de se passer ... les mêmes lignes fonctionnaient bien avant. C'est la première fois que je trouve ce problème.
Il a soudainement cessé de fonctionner ici aussi. Apparemment, l'api kaggle ne cherchait pas le fichier kaggle.json au bon endroit… .. Depuis que j'utilisais l'api kaggle dans un cahier de notes colab, j'importais le fichier kaggle.json comme suit:
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)
Cela a bien fonctionné. Mais maintenant, l'api kaggle cherche le fichier kaggle.json à cet endroit:
~/.kaggle/kaggle.json
Donc, je devais juste déplacer/copier le fichier que j'ai téléchargé au bon endroit:
!mkdir ~/.kaggle
!cp /content/.kaggle/kaggle.json ~/.kaggle/kaggle.json
Et cela a recommencé à fonctionner.
Cette chose simple l'a fait pour moi sur Google Cola.
!echo '{"username":"USERNAME","key":"KEY"}' > ~/.kaggle/kaggle.json
!kaggle datasets download -d mmoreaux/environmental-sound-classification-50
Initialement, j'ai eu du mal à copier le fichier .json dans la VM colab. Finalement, pour moi, les choses suivantes ont fonctionné: En utilisant Google colaboratory, vous devez d’abord installer l’API kaggle avec:
!pip install kaggle
Informations complémentaires et instructions ici https://github.com/Kaggle/kaggle-api . Ensuite, le lien vous demande d'activer l'API avec un fichier que vous pouvez télécharger avec votre utilisateur kaggle le kaggle.com -> Mon compte -> créer un nouveau jeton d'API. ce fichier est kaggle.json.
Ensuite, pour télécharger ce fichier kaggle.json dans la colab VM pour l'activation, vous pouvez d'abord le télécharger sur votre lecteur Google (il suffit de le faire glisser sur votre lecteur). Ensuite, entrez la commande suivante dans colab pour importer votre lecteur:
from google.colab import drive
drive.mount('/content/gdrive')
une fois l’autorisation terminée, vous pouvez copier le fichier du lecteur sur colab avec:
!cp /content/gdrive/My\ Drive/kaggle.json ~/.kaggle/kaggle.json
Enfin, j'espère que vous pourrez exécuter la commande:
!kaggle competitions download -c <competition-name>
J'espère que ça aide!
Vérifiez également les autorisations sur votre fichier kaggle.json
. J'ai la même erreur car après avoir lancé une commande différente de kaggle, j'ai eu cet avertissement:
Avertissement: votre clé API Kaggle est lisible par les autres utilisateurs de ce système! Pour résoudre ce problème, vous pouvez exécuter 'chmod 600 /...etc/kaggle.json'
J'ai exécuté ce qu'ils avaient suggéré et j'ai eu la même erreur que vous, jusqu'à ce que je modifie les autorisations comme auparavant.
C’est ma propre machine (l’autre utilisateur est un mentor, j’ai confiance), j’ai donc utilisé chown 666 /.../kaggle.json
et c’est résolu, mais soyez prudent et ne donnez que les autorisations qui conviennent en fonction de votre configuration respective.
On dirait que le répertoire personnel de Colab a récemment changé de /content
à /root
. L'utilisation de ~
dans les chemins pour faire référence à HOME plutôt qu'à un codage en dur /content
résoudra le problème.
J'ai mis à jour le flux de travail étape par étape dans cette réponse pour refléter les modifications. Désolé pour le dérangement!