在 google colab 中找不到 kaggle.json 文件
Can't find kaggle.json file in google colab
我正在尝试将 kaggle imagenet 对象定位挑战数据下载到 google colab 中,以便我可以使用它来训练我的模型。 Kaggle 使用 API 来轻松快速地访问他们的数据集。 (https://github.com/Kaggle/kaggle-api) 但是,在 google colab 中调用命令 "kaggle competitions download -c imagenet-object-localization-challenge" 时,找不到包含我的用户名和 api-key 的 kaggle.json 文件.
当 运行 jupyter notebook 时,我的 mac 没有遇到这个问题,但由于我想为我的模型使用 google 的 gpu,我开始使用google 协作。因为 kaggle API 期望用户名和 api-key 位于 .kaggle 目录中的 kaggle.json 文件中,所以我首先创建目录 .kaggle 然后创建文件 kaggle.json,其中我写了我的用户名和 api-key(下面的例子不显示我的用户名和 api-key)。然后我尝试配置我的 json 文件的路径,供 kaggle 在调用 kaggle 下载命令时使用。
!pip install kaggle
!mkdir .kaggle
!touch .kaggle/kaggle.json
api_token = {"username":"username","key":"api-key"}
import json
import zipfile
import os
with open('/content/.kaggle/kaggle.json', 'w') as file:
json.dump(api_token, file)
!chmod 600 /content/.kaggle/kaggle.json
!kaggle config path -p /content
但是,当运行最后一个命令时,我得到了错误:
IOError: Could not find kaggle.json. Make sure it's located in /root/.kaggle. Or use the environment method.
我的目标是使用以下命令从 kaggle 获取数据集:
!kaggle competitions download -c imagenet-object-localization-challenge
os.chdir('/content/competitions/imagenet-object-localization-challenge')
for file in os.listdir():
zip_ref = zipfile.ZipFile(file, 'r')
zip_ref.extractall()
zip_ref.close()
我不明白为什么 kaggle API 找不到我的 json 文件。如何在 google colab 中使用 API?
如错误所述,您需要将 kaggle.json 放在正确的位置。
尝试:
!mv .kaggle /root/
然后 运行 再次输入您的代码。
根据 kaggle api documentation,凭据 json 正在寻找的位置是 ~/.kaggle/kaggle.json
,因为 google colab 环境是基于 Linux 的。
在您的代码段中,您尝试配置 path
参数,但它不用于查找凭据 json:
- path: Folder where file(s) will be downloaded, defaults to current working directory
因此 google colab 环境的完整工作代码段为:
!mkdir ~/.kaggle
!touch ~/.kaggle/kaggle.json
api_token = {"username":"username","key":"api-key"}
import json
with open('/root/.kaggle/kaggle.json', 'w') as file:
json.dump(api_token, file)
!chmod 600 ~/.kaggle/kaggle.json
然后一些 api 打电话给
!kaggle datasets download -d datamunge/sign-language-mnist
如果您是 windows 用户,请将您的 kaggle.json 移动到 .kaggle 文件夹中,这样您就可以在系统根目录(位于您的用户名文件夹中)中找到它。
您可以从 Kaggle 的门户网站本身找到您需要放置的 JSON 文件。直接点击'Create New API Token'就会给你一个JSON需要放置的文件
运行单元格中的这段代码用于配置环境
import os
os.environ["KAGGLE_CONFIG_DIR"] = "/path_to_your_kaggle.json_file"
他们已经编写了 GitHub 存储库,您可以配置环境 kaggle.json colab 或 windows 中也出现错误:
You can define a shell environment variable KAGGLE_CONFIG_DIR
to change this location to $KAGGLE_CONFIG_DIR/kaggle.json
(on Windows it will be %KAGGLE_CONFIG_DIR%\kaggle.json
).
--
Refer this
我自己的方法,如果你喜欢最小化'!'除了上面的 Egor B Eremeev 回答。
这可能会有所帮助,具体取决于您的用例,并且如果您正在编写脚本,从长远来看 运行 会导致更清晰的代码。
import json
import os
from pathlib import Path
# your api key
api_key = {
'username':"username" ,
'key':"some_api_key"}
# uses pathlib Path
kaggle_path = Path('/root/.kaggle')
os.makedirs(kaggle_path, exist_ok=True)
# opens file and dumps python dict to json object
with open (kaggle_path/'kaggle.json', 'w') as handl:
json.dump(api_key,handl)
os.chmod(kaggle_path/'kaggle.json', 600)
我正在尝试将 kaggle imagenet 对象定位挑战数据下载到 google colab 中,以便我可以使用它来训练我的模型。 Kaggle 使用 API 来轻松快速地访问他们的数据集。 (https://github.com/Kaggle/kaggle-api) 但是,在 google colab 中调用命令 "kaggle competitions download -c imagenet-object-localization-challenge" 时,找不到包含我的用户名和 api-key 的 kaggle.json 文件.
当 运行 jupyter notebook 时,我的 mac 没有遇到这个问题,但由于我想为我的模型使用 google 的 gpu,我开始使用google 协作。因为 kaggle API 期望用户名和 api-key 位于 .kaggle 目录中的 kaggle.json 文件中,所以我首先创建目录 .kaggle 然后创建文件 kaggle.json,其中我写了我的用户名和 api-key(下面的例子不显示我的用户名和 api-key)。然后我尝试配置我的 json 文件的路径,供 kaggle 在调用 kaggle 下载命令时使用。
!pip install kaggle
!mkdir .kaggle
!touch .kaggle/kaggle.json
api_token = {"username":"username","key":"api-key"}
import json
import zipfile
import os
with open('/content/.kaggle/kaggle.json', 'w') as file:
json.dump(api_token, file)
!chmod 600 /content/.kaggle/kaggle.json
!kaggle config path -p /content
但是,当运行最后一个命令时,我得到了错误:
IOError: Could not find kaggle.json. Make sure it's located in /root/.kaggle. Or use the environment method.
我的目标是使用以下命令从 kaggle 获取数据集:
!kaggle competitions download -c imagenet-object-localization-challenge
os.chdir('/content/competitions/imagenet-object-localization-challenge')
for file in os.listdir():
zip_ref = zipfile.ZipFile(file, 'r')
zip_ref.extractall()
zip_ref.close()
我不明白为什么 kaggle API 找不到我的 json 文件。如何在 google colab 中使用 API?
如错误所述,您需要将 kaggle.json 放在正确的位置。
尝试:
!mv .kaggle /root/
然后 运行 再次输入您的代码。
根据 kaggle api documentation,凭据 json 正在寻找的位置是 ~/.kaggle/kaggle.json
,因为 google colab 环境是基于 Linux 的。
在您的代码段中,您尝试配置 path
参数,但它不用于查找凭据 json:
- path: Folder where file(s) will be downloaded, defaults to current working directory
因此 google colab 环境的完整工作代码段为:
!mkdir ~/.kaggle
!touch ~/.kaggle/kaggle.json
api_token = {"username":"username","key":"api-key"}
import json
with open('/root/.kaggle/kaggle.json', 'w') as file:
json.dump(api_token, file)
!chmod 600 ~/.kaggle/kaggle.json
然后一些 api 打电话给
!kaggle datasets download -d datamunge/sign-language-mnist
如果您是 windows 用户,请将您的 kaggle.json 移动到 .kaggle 文件夹中,这样您就可以在系统根目录(位于您的用户名文件夹中)中找到它。
您可以从 Kaggle 的门户网站本身找到您需要放置的 JSON 文件。直接点击'Create New API Token'就会给你一个JSON需要放置的文件
运行单元格中的这段代码用于配置环境
import os
os.environ["KAGGLE_CONFIG_DIR"] = "/path_to_your_kaggle.json_file"
他们已经编写了 GitHub 存储库,您可以配置环境 kaggle.json colab 或 windows 中也出现错误:
You can define a shell environment variable
KAGGLE_CONFIG_DIR
to change this location to$KAGGLE_CONFIG_DIR/kaggle.json
(on Windows it will be%KAGGLE_CONFIG_DIR%\kaggle.json
).
-- Refer this
我自己的方法,如果你喜欢最小化'!'除了上面的 Egor B Eremeev 回答。
这可能会有所帮助,具体取决于您的用例,并且如果您正在编写脚本,从长远来看 运行 会导致更清晰的代码。
import json
import os
from pathlib import Path
# your api key
api_key = {
'username':"username" ,
'key':"some_api_key"}
# uses pathlib Path
kaggle_path = Path('/root/.kaggle')
os.makedirs(kaggle_path, exist_ok=True)
# opens file and dumps python dict to json object
with open (kaggle_path/'kaggle.json', 'w') as handl:
json.dump(api_key,handl)
os.chmod(kaggle_path/'kaggle.json', 600)