Ошибка при импорте набора данных Kaggle в 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.

Я не знаю, что только что произошло... раньше те же строки работали нормально. Я впервые обнаружил эту проблему.


person Alan.L    schedule 22.08.2018    source источник


Ответы (7)


Здесь он тоже внезапно перестал работать. По-видимому, API kaggle не искал файл kaggle.json в нужном месте. Поскольку я использовал API kaggle внутри блокнота Colab, я импортировал 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

И снова начал работать.

person Edhowler    schedule 22.08.2018
comment
Да, мы устанавливали $HOME=/content по историческим причинам, но недавно отменили это. Если вы просто используете filename = os.path.expanduser("~/.kaggle/kaggle.json") в приведенном выше фрагменте, вам не нужно делать дополнительную копию (поскольку я предполагаю, что вам нужен файл только в одном месте). - person Craig Citro; 22.08.2018

Эта простая вещь сделала это для меня в 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
person Marc Moreaux    schedule 24.10.2018
comment
Спасибо за меня, это сработало, только если я выберу следующий каталог. !echo '{username:USERNAME,key:KEY}' › /root/.kaggle/kaggle.json - person flow; 12.03.2019

Первоначально возникли проблемы с копированием файла .json на виртуальную машину colab. В конце концов для меня сработало следующее: работая через коллаборацию Google, сначала вам нужно установить API kaggle с помощью:

!pip install kaggle

Дополнительная информация и инструкции здесь https://github.com/Kaggle/kaggle-api. Далее по ссылке предлагается активировать API с помощью файла, который вы можете загрузить вместе с пользователем kaggle на странице kaggle.com -> Моя учетная запись -> создать новый токен API. это файл kaggle.json.

Затем, чтобы загрузить этот файл kaggle.json на виртуальную машину colab для активации, вы можете сначала загрузить его на свой диск 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>

Надеюсь, это поможет!

person Ilai Waimann    schedule 08.10.2018

Также проверьте права доступа к вашему файлу kaggle.json. Я получил ту же ошибку, потому что после запуска другой команды kaggle я получил это предупреждение:

Предупреждение: ваш ключ API Kaggle доступен для чтения другими пользователями этой системы! Чтобы это исправить, вы можете запустить «chmod 600 /...etc/kaggle.json».

Я выполнил то, что они предложили, и получил ту же ошибку, что и вы, пока я не изменил разрешения обратно на то, что было раньше.

Это моя собственная машина (другой пользователь является наставником, которому я доверяю), поэтому я использовал chown 666 /.../kaggle.json, и это решило проблему, но будьте осторожны и давайте разрешения только на основе того, что имеет смысл с вашей соответствующей настройкой.

person Cobra    schedule 17.12.2018

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. Исправьте предупреждение

Ваш ключ API Kaggle доступен для чтения другими пользователями этой системы!

!chmod 600 /root/.kaggle/kaggle.json

КОНТРОЛЬНАЯ РАБОТА

!pip install kaggle
import kaggle
!kaggle competitions list --csv

РЕЗУЛЬТАТ

ref, крайний срок, категория, награда, teamCount, userHasEntered digit-recognizer, 2030-01-01 00:00:00, Начало работы, Знание, 2867, Ложный титаник, 2030-01-01 00:00:00, Начало работы, Знания,11221,Ложные методы продвинутой регрессии цен на жилье,2030-01-01 00:00:00,Начало работы,Знания,4353,Настоящая проблема локализации-объектов-изображений,2029-12-31 07:00 :00,Исследования,Знания,40,Ложные конкурентные-данные-прогноз-будущих-продаж,2019-12-31 23:59:00,Детская площадка,Слава,2780,Ложные две-сигма-финансовые-новости,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,False inaturalist-2019-fgvc6,2019-06-10 23:59:00,Исследования,престижность,75,False freesound- audio-tagged-2019,2019-06-10 11:59:00,Исследование,"$5,000",250,False

person Partha Sen    schedule 18.04.2019

Похоже, домашний каталог в Colab недавно изменился с /content на /root. Использование ~ в путях для ссылки на HOME вместо жесткого кодирования /content исправит ситуацию.

Я обновил пошаговый рабочий процесс в этом ответе, чтобы отразить изменения. Извините за беспокойство!

person Bob Smith    schedule 22.08.2018
comment
Большое спасибо. Я попробую это. Спасибо за вашу доброту. - person Alan.L; 23.08.2018

Сначала убедитесь, что вы установили kaggle API: pip install kaggle. Затем получите токены API с https://www.kaggle.com/kaggle_user_name/account: введите здесь описание изображения

И просто загрузите свои данные для конкурса (здесь 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"
person prosti    schedule 01.05.2019