ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

uv 如何把 uv.lock 导出为 CycloneDX SBOM?uv export --format cyclonedx1.5

uv 如何把 uv.lock 导出为 CycloneDX SBOM?uv export --format cyclonedx1.5 uv 如何把 uv.lock 导出为 CycloneDX SBOMuv export --format cyclonedx1.5【免费下载链接】uvAn extremely fast Python package and project manager, written in Rust.项目地址: https://gitcode.com/GitHub_Trending/uv/uv当你需要把 Python 项目的依赖清单交给安全审计、合规检查或供应链分析工具时可以用 uv 把项目锁文件uv.lock导出为 CycloneDX 格式的 SBOMSoftware Bill of Materials。执行uv export --format cyclonedx1.5后uv 会生成一个 JSON 编码的 CycloneDX v1.5 文档包含项目本身及其全部依赖。这个功能适用于已经具备uv.lock的 uv 项目需要注意的是CycloneDX 导出目前处于 preview预览状态后续版本可能随时调整。前提项目里要有 uv.lockuv export的输入是项目的锁文件。确认项目目录里已有uv.lock如果还没有或依赖声明pyproject.toml有变更可以先运行uv lock生成或更新它。uv 的锁文件机制包括uv lock、uv sync的用法见 locking and syncing 文档。导出命令在项目根目录执行$ uv export --format cyclonedx1.5命令默认把 JSON 打印到 stdout方便直接管道给下游工具。如果要落盘成文件用--output-file$ uv export --format cyclonedx1.5 --output-file sbom.jsonuv export支持三种格式requirements.txt、pylock.toml、cyclonedx1.5通过--format切换格式总览见 Exporting a lockfile。处理 preview 警告由于 CycloneDX 导出是预览功能首次运行时 stderr 会输出警告warning: uv export --formatcyclonedx1.5 is experimental and may change without warning. Pass --preview-features sbom-export to disable this warning.这不影响导出结果只是提醒格式可能变化。如果不想每次都看到它可以显式启用sbom-export这个 preview feature启用方式见 Preview features 文档$ uv export --format cyclonedx1.5 --preview-features sbom-export或者通过环境变量$ UV_PREVIEW_FEATURESsbom-export uv export --format cyclonedx1.5如果希望整个项目固定启用该特性也可以在uv.toml或pyproject.toml的[tool.uv]中写入preview-features [sbom-export]也可以直接用--preview标志或UV_PREVIEW1环境变量一次性启用全部 preview 功能但范围更大通常推荐按特性启用。验证输出内容成功时命令退出码为 0stdout或指定文件是如下结构的 JSON 文档。下面是仓库测试快照中的一个示例结果做了删节serialNumber、timestamp等值每次运行都会不同{ bomFormat: CycloneDX, specVersion: 1.5, version: 1, metadata: { tools: [ { vendor: Astral Software Inc., name: uv, version: [VERSION] } ], component: { type: library, bom-ref: project-10.1.0, name: project, version: 0.1.0 } }, components: [ { type: library, bom-ref: urllib3-22.2.0, name: urllib3, version: 2.2.0, purl: pkg:pypi/urllib32.2.0, externalReferences: [ { type: distribution, url: https://files.pythonhosted.org/packages/.../urllib3-2.2.0-py3-none-any.whl, hashes: [ { alg: SHA-256, content: ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224 } ] } ] } ], dependencies: [ { ref: project-10.1.0, dependsOn: [urllib3-22.2.0] }, { ref: urllib3-22.2.0 } ] }示例中的关键字段bomFormat与specVersion标识这是 CycloneDX 1.5 文档metadata.component是项目根CycloneDX 要求恰好一个根组件components列出各依赖带purl和分发包的 SHA-256 哈希dependencies描述依赖关系图。uv 还会在组件上附加两个自定义属性供下游工具使用uv:package:marker环境标记例如python_version 3.8uv:workspace:pathworkspace 成员的相对路径。默认情况下导出的组件会带上哈希信息如果下游工具不需要可加--no-hashes省略。限制与边界CycloneDX 导出在 preview 阶段官方文档明确提示may change in any future release即格式和字段可能在后续版本中改变。用于 CI 或归档时建议记录生成时的 uv 版本。导出内容来自uv.lock因此先保证锁文件与pyproject.toml中的依赖声明一致必要时先跑uv lock再导出。关于其他两种导出格式requirements.txt、pylock.toml的取舍export 文档中的建议是uv.lock本身比导出文件表达能力更强如果发现自己需要长期维护一份导出的requirements.txt可以考虑向项目提交 issue 讨论使用场景。【免费下载链接】uvAn extremely fast Python package and project manager, written in Rust.项目地址: https://gitcode.com/GitHub_Trending/uv/uv创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表