
CLI开发工具数据科学【免费下载链接】kaggle-apiOfficial Kaggle CLI项目地址https://gitcode.com/gh_mirrors/ka/kaggle-api点击查看免费下载本篇指南以 Kaggle 官方命令行工具kaggle-api即 Kaggle CLI的 kernels_metadata 文档 为骨架系统讲解kernel-metadata.json的全部字段语义、取值约束与默认行为并结合仓库源码kaggle_api_extended.py与单元测试test_kernels_push.py剖析上传、校验、拉取的底层实现。读完本文你将能够从零编写一份合法可用的 kernel 元数据文件熟练使用kaggle kernels init、kaggle kernels push、kaggle kernels pull -m完成新建、更新、回拉内核的全流程并理解 slug、id_no、machine_shape 等关键字段背后的工作机制。什么是 kernel-metadata.json要在 Kaggle 上上传并运行一个内核Kernel即 notebook 或 script必须为它指定一个特殊的kernel-metadata.json文件。该文件与内核源码.ipynb、.py、.R、.Rmd等一起放在同一个目录中是kaggle kernels push命令读取的唯一配置入口——它声明了这个内核的身份谁拥有、叫什么、源码位置、语言与类型、可见性、运行环境GPU/TPU/网络以及它依赖的数据源。在仓库源码中该文件名被定义为常量KERNEL_METADATA_FILE kernel-metadata.json见 kaggle_api_extended.py与dataset-metadata.json、model-metadata.json、competition-metadata.json等并列是 Kaggle CLI 各资源类型上传时的统一约定。一个最小可用的基础示例以下是最基础、可复制使用的kernel-metadata.json示例来自 kernels_metadata.md 原文{ id: timoboz/my-awesome-kernel, id_no: 12345, title: My Awesome Kernel, code_file: my-awesome-kernel.ipynb, language: python, kernel_type: notebook, is_private: false, enable_gpu: false, enable_internet: false, machine_shape: , dataset_sources: [timoboz/my-awesome-dataset], competition_sources: [], kernel_sources: [], model_sources: [] }注意上例中is_private、enable_gpu、enable_internet均以字符串false书写。实际解析时CLI 通过get_bool兼容布尔值与字符串两种形式见下文“字段详解”与“源码视角”章节因此写成 JSON 布尔值false也完全合法。两条捷径init 生成模板与 pull 回拉元数据手动编写容易遗漏字段官方 CLI 提供了两条互补的途径新建内核使用kaggle kernels init -p /path/to/kernelCLI 会在指定目录生成一份带占位符的kernel-metadata.json模板。源码中kernels_initialize生成的模板包含id形如用户名/INSERT_KERNEL_SLUG_HERE、title、code_file、language、kernel_type、is_private、enable_gpu、enable_tpu、enable_internet、machine_shape以及四类 sources 空数组见 kaggle_api_extended.py。命令结束后会打印Kernel metadata template written to: 路径。已有内核使用kaggle kernels pull -p /path/to/download -k username/kernel-slug -m在下载源码的同时以-m/--metadata参数要求一并生成该内核当前的kernel-metadata.json。拉取时生成的元数据包含服务端返回的完整字段如id、id_no、title、code_file、language、kernel_type、is_private、enable_gpu、enable_tpu、enable_internet、keywords、四类 sources、docker_image与machine_shape见 kaggle_api_extended.py。若当前目录已存在kernel-metadata.jsonpull 会优先读取其中的id与code_file来复用命名避免覆盖本地约定。这两条命令分别解决了“从零开始”和“从已有内核复制配置”两个场景是本文手写配置之外的推荐路径。字段总览与完整语义官方当前支持以下元数据字段以下说明对应 kernels_metadata.md 原文的 Contents 章节并补充了源码层面的默认值与校验行为id与id_no内核身份标识二选一id_no 优先id内核的 URL slug格式为用户名slug/内核slug例如timoboz/my-awesome-kernel。其中第一段是你的用户名 slug第二段是该内核唯一的 slug。id_no内核的数字 ID。id与id_no两者必须至少指定一个如果同时指定id_no会被优先采用见 kaggle_api_extended.py 的校验逻辑两者皆缺则报错ID or slug must be specified in the metadata。源码层面id中的第三段被视为版本号若id形如owner/kernel-slug/3push 会直接报错Kernel metadata id (slug) cannot contain a version见 kaggle_api_extended.py版本管理请交给 Kaggle 服务端不要在元数据里写版本。title内核标题新内核必填已有内核可选。标题与 slug 相互绑定内核 slug 永远是标题小写化、并用-替换空格后的结果。若想重命名内核可以直接修改元数据中的title但必须在重命名完成后同步更新id。源码约束标题长度至少 5 个字符否则报错Title must be at least five characters见 kaggle_api_extended.py。源码还会将title做 slug 化处理后与id中的 slug 比对若不匹配会打印警告提示标题无法解析为指定的 id见 kaggle_api_extended.py避免因 slug 与标题脱节导致意外行为。code_file源码文件路径必填内核源码文件的路径必填。若非绝对路径则应相对于kernel-metadata.json所在目录。push 时会以os.path.join(folder, code_path)拼接出实际文件路径并检查文件存在源码缺失报错Source file not found: 路径该字段为空则报错A source file must be specified in the metadata见 kaggle_api_extended.py。language内核语言必填合法取值python、r、rmarkdown。源码常量valid_push_language_types [python, r, rmarkdown]见 kaggle_api_extended.py非法值直接报错。一个特殊处理当kernel_type notebook且language rmarkdown时提交语言会被自动归一化为r见 kaggle_api_extended.py。kernel_type内核类型必填合法取值script、notebook。源码常量valid_push_kernel_types [script, notebook]见 kaggle_api_extended.py。当类型为notebook时push 会对.ipynb内容做预处理清空代码单元格的outputs并将source数组拼接为单个字符串以满足服务端对 notebook 结构的预期见 kaggle_api_extended.py。is_private可见性是否私有。未指定时默认true即默认为私有内核。源码通过get_bool(meta_data, is_private, True)读取兼容布尔值与字符串见 kaggle_api_extended.py。enable_gpuGPU 加速是否在 GPU 上运行。未指定时默认false。通过get_bool(meta_data, enable_gpu, False)读取见 kaggle_api_extended.py。enable_internet网络访问内核能否访问互联网。未指定时默认false。注意与文档默认值不同源码读取默认值为trueget_bool(meta_data, enable_internet, True)见 kaggle_api_extended.py并在 init 模板中默认写入enable_internet: true。实际以你使用的 CLI 版本为准手写配置时显式给出该字段最为稳妥。machine_shape加速器/GPU 类型指定使用的加速器类型例如NvidiaTeslaT4GPU T4 ×2、NvidiaL4、TpuV5E8TPU v5e-8。留空表示使用默认配置。push 时字段值会随请求提交同时--accelerator命令行参数可覆盖元数据中的设置request.machine_shape acc if acc else ...见 kaggle_api_extended.py。源码内置了“已退役加速器”警告表见 kaggle_api_extended.py例如NvidiaTeslaP100会被提示“会话实际运行在默认 GPUNvidiaTeslaT4上”TpuV38系列会被替换为TpuV5E8TpuV232/TpuV2256则降级为纯 CPU。使用退役型号时 push 仍会成功但会打印警告_warn_if_retired_accelerator见 kaggle_api_extended.py。当前可用的加速器清单可参考 kernels.md 中kaggle kernels push一节NvidiaTeslaT4、NvidiaTeslaA100、NvidiaL4、TpuV5E8、NvidiaL4X1、TpuV6E8、NvidiaH100、NvidiaRtxPro6000其中部分型号仅对特定竞赛参与者或 Kaggle 管理员开放。四类 sources内核依赖的数据源dataset_sources数据集来源列表格式username/dataset-slug如timoboz/my-awesome-dataset。push 时逐项调用validate_dataset_string校验见 kaggle_api_extended.py。competition_sources竞赛来源列表格式competition-slug不含用户名段。kernel_sources内核来源列表格式username/kernel-slug逐项调用validate_kernel_string校验。model_sources模型来源列表格式username/model-slug/framework/variation-slug/version-number共 5 段含框架与版本号逐项调用validate_model_instance_version_string校验见 kaggle_api_extended.py。其他可选字段源码支持、文档未展开enable_tpuTPU 加速开关默认false通过get_bool(..., False)读取见 kaggle_api_extended.py并随kernels pull -m一并回写。keywords内核标签列表对应服务端category_ids。docker_image与docker_image_pinning_type指定运行镜像及镜像固定策略docker_image_pinning_type的合法值为original、latest常量valid_push_pinning_types见 kaggle_api_extended.py非法值报错见 kaggle_api_extended.py。官方文档末尾注明“我们将在后续版本的 API 中增加更多元数据处理。”因此字段集合会持续演进以所使用 CLI 版本的实际行为为准。字段速查表字段必填合法取值/格式默认值备注id与id_no二选一username/kernel-slug无slug 中不能含版本号id_no与id二选一数字无同时指定时优先于idtitle新内核必填任意字符串≥5 字符无与 slug 绑定重命名后需同步更新idcode_file是相对或绝对路径无相对路径基于kernel-metadata.json所在目录language是python/r/rmarkdown无notebook rmarkdown 会自动归一化为 rkernel_type是script/notebook无notebook 会清空单元格 outputsis_private否true/falsetrue兼容布尔值与字符串enable_gpu否true/falsefalse—enable_internet否true/false文档false/ 源码true建议显式书写machine_shape否如NvidiaTeslaT4、NvidiaL4、TpuV5E8可被--accelerator覆盖dataset_sources否[username/dataset-slug][]逐项校验competition_sources否[competition-slug][]无用户名段kernel_sources否[username/kernel-slug][]逐项校验model_sources否[username/model-slug/framework/variation-slug/version-number][]5 段式逐项校验端到端实战从模板到上线第一步初始化模板并编辑kaggle kernels init -p my-kernel/将生成的my-kernel/kernel-metadata.json按需修改例如{ id: your-username/my-first-cli-kernel, title: My First CLI Kernel, code_file: my-first-cli-kernel.ipynb, language: python, kernel_type: notebook, is_private: false, enable_gpu: false, enable_internet: true, machine_shape: , dataset_sources: [timoboz/my-awesome-dataset], competition_sources: [], kernel_sources: [], model_sources: [] }第二步推送并运行kaggle kernels push -p my-kernel/CLI 会依次完成读取并校验元数据 → 校验 title 长度、language/kernel_type 合法性、id 与 id_no 存在性、源码文件存在性、sources 格式 → 预处理 notebook → 组装ApiSaveKernelRequest提交 → 打印结果 URL。若元数据中的内核已存在于你的账户下则执行更新否则创建新内核。常用变体# 指定加速器覆盖元数据中的 machine_shape kaggle kernels push -p my-kernel/ --accelerator NvidiaTeslaT4 # 限制最大运行时长秒 kaggle kernels push -p my-kernel/ -t 3600 # 仅保存新版本、不运行等价于网页端 Quick Save kaggle kernels push -p my-kernel/ --no-runpush命令同时提供别名updatepull提供别名get见 cli.py。第三步拉回源码与元数据kaggle kernels pull -p ./downloaded your-username/my-first-cli-kernel -m-m/--metadata会同时生成该内核当前的kernel-metadata.json包含id_no、keywords、docker_image等本地模板中没有的服务端字段便于你在其他机器上复刻或继续迭代。源码视角push 的完整调用链一次kaggle kernels push的实际执行路径为CLI 入口parser_kernels_pushcli.py解析-p/--path、-t/--timeout、--accelerator、--no-run调用api.kernels_push_clikernels_push_clikaggle_api_extended.py调用kernels_pushkernels_pushkaggle_api_extended.py执行全部校验、notebook 预处理与请求组装最终调用kaggle.kernels.kernels_api_client.save_kernel(request)返回结果后kernels_push_cli打印版本号、结果状态与内核 URL若--no-run则提示“saved without running”。kaggle kernels pull -m的对应链路则为kernels_pull_cli→kernels_pullkaggle_api_extended.py→kernels_api_client.get_kernel(request)→ 依据服务端返回的 language/kernel_type 推断扩展名.py/.R/.Rmd/.ipynb/.irnb/.ijlnb等→ 写源码 → 写元数据。单元测试test_kernels_push.py覆盖了缺失元数据文件、title 过短、code_file 缺失、id 与 id_no 同时缺失、id 含版本号、非法 language/kernel_type、非法docker_image_pinning_type等异常路径与上述源码校验一一对应可作为你排查本地元数据问题的参考。常见错误与排查要点ID or slug must be specified in the metadataid与id_no均缺失补其一即可。Kernel metadata id (slug) cannot contain a versionid写成了owner/kernel-slug/3形式去掉版本段。Title must be at least five characterstitle 少于 5 个字符。A source file must be specified in the metadata/Source file not foundcode_file缺失或相对于元数据目录的路径不正确。A valid language must be specified.../A valid kernel type must be specified...language 或 kernel_type 不在合法取值集合内。slug 与 title 不一致警告title slug 化后与id中的 slug 不符修改 title 或 id 使之一致。退役加速器警告machine_shape使用了退役型号如NvidiaTeslaP100、TpuV38服务端会自动替换运行环境建议改用当前可用型号。总结kernel-metadata.json是 Kaggle CLI 上传内核的核心契约文件id/id_no决定内核身份title与 slug 强绑定code_file/language/kernel_type决定源码形态is_private/enable_gpu/enable_internet/machine_shape决定运行环境四类 sources 决定依赖数据。配合kaggle kernels init生成模板、kaggle kernels pull -m回拉现有配置你可以完全用命令行完成内核的创建、更新、复制与迭代遇到异常时依据 kernels_push 校验源码 与 单元测试 即可快速定位。后续版本的 API 还会继续扩展元数据字段建议始终以你所安装 CLI 版本的实际行为为准。赞分享CLI开发工具数据科学【免费下载链接】kaggle-apiOfficial Kaggle CLI项目地址https://gitcode.com/gh_mirrors/ka/kaggle-api点击查看免费下载相关推荐kcmd完全指南如何把Knowledge Catalog的数据元数据当Git代码管理init/pull/push三步走kcmd完全指南如何把Knowledge Catalog的数据元数据当Git代码管理init/pull/push三步走 Knowledge Catalog数据目录AI Agent人工智能知识管理示例工程DataHub元数据摄取完全指南Push与Pull模式详解DataHub元数据摄取完全指南Push与Pull模式详解 本文全面解析DataHub的元数据摄取机制详细对比Push与Pull两种集成模式。文章首先介绍D数据目录数据治理数据血缘后端前端数据工程数据集成lark-cli 妙搭 Git 凭证管理用 git-credential-init 打通原生 git clone/pull/pushlark cli 妙搭 Git 凭证管理用 git credential init 打通原生 git clone/pull/push 导读 在 lark cCLIAI 技能上一篇Stillcolor代码解析SwiftUI菜单栏应用的完整实现分析下一篇Pot-Desktop 快速教程免费划词翻译与截图 OCR 的完整使用指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考