
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 討論使用場景?!久赓M下載鏈接】uvAn extremely fast Python package and project manager, written in Rust.項目地址: https://gitcode.com/GitHub_Trending/uv/uv創作聲明:本文部分內容由AI輔助生成(AIGC),僅供參考