CycloneDX/cyclonedx-python
GitHub: CycloneDX/cyclonedx-python
一款为Python项目生成符合OWASP CycloneDX规范的软件物料清单(SBOM)的工具。
Stars: 370 | Forks: 93
# CycloneDX Python SBOM 生成工具
[![shield_pypi-version]][link_pypi]
[![shield_docker-version]][link_docker]
[![shield_rtfd]][link_rtfd]
[![shield_gh-workflow-test]][link_gh-workflow-test]
[![shield_coverage]][link_codacy]
[![shield_ossf-best-practices]][link_ossf-best-practices]
[![shield_license]][license_file]
[![shield_website]][link_website]
[![shield_slack]][link_slack]
[![shield_groups]][link_discussion]
[![shield_twitter-follow]][link_twitter]
本工具生成符合 OWASP [CycloneDX](https://cyclonedx.org/) 格式的软件物料清单(SBOM)文档。
这可能是针对任何与 Python 相关项目最准确、最完整的 SBOM 生成器。
支持的数据源包括:
* Python(虚拟)环境
* `Poetry` 清单与锁文件
* `Pipenv` 清单与锁文件
* Pip 的 `requirements.txt` 格式
* `PDM` 清单与锁文件**未**得到显式支持。
不过,PDM 的 Python 虚拟环境完全受支持。请参阅文档中的示例。
* `uv` 清单与锁文件**未**得到显式支持。
不过,uv 的 Python 虚拟环境完全受支持。请参阅文档中的示例。
* `Conda` 作为包管理器自版本 4 起**不再支持**。
不过,通过上述方法可完全支持 Conda 的 Python 环境。请参阅文档中的示例。
基于 [OWASP 软件物料清单规范](https://scvs.owasp.org/scvs/v2-software-bill-of-materials/) 的标准,
本工具能够生成几乎达到 Level-2 级别的 SBOM 文档(仅签名需外部完成)。
生成的 SBOM 文档遵循 [官方规范与标准](https://github.com/CycloneDX/specification),
并可能具备以下特性:
[`cdx:python` 命名空间分类法](https://github.com/CycloneDX/cyclonedx-property-taxonomy/blob/main/cdx/python.md)、
[`cdx:pipenv` 命名空间分类法](https://github.com/CycloneDX/cyclonedx-property-taxonomy/blob/main/cdx/pipenv.md)、
[`cdx:poetry` 命名空间分类法](https://github.com/CycloneDX/cyclonedx-property-taxonomy/blob/main/cdx/poetry.md)
。
请查阅完整的 [文档][link_rtfd] 获取更多细节。
## 要求
* Python `>=3.9,<4`
不过,存在更早版本的本工具,支持 Python `>=2.7`。
## 安装
请使用你偏好的 Python 包管理工具从 [Python Package Index (PyPI)][link_pypi] 安装本工具。
使用以下命令之一进行安装:
```
python -m pip install cyclonedx-bom # install via pip
pipx install cyclonedx-bom # install via pipx
poetry add cyclonedx-bom # install via poetry
uv tool install cyclonedx-bom # install via uv
# ... 你掌握了窍门
```
## 用法
通过以下命令之一调用:
```
cyclonedx-py # call script
python3 -m cyclonedx_py # call python module CLI
```
### 基础用法
```
$ cyclonedx-py --help
usage: cyclonedx-py [-h] [--version] ...
Creates CycloneDX Software Bill of Materials (SBOM) from Python projects and environments.
positional arguments:
environment (env, venv)
Build an SBOM from Python (virtual) environment
requirements Build an SBOM from Pip requirements
pipenv Build an SBOM from Pipenv manifest
poetry Build an SBOM from Poetry project
options:
-h, --help show this help message and exit
--version show program's version number and exit
```
### 高级用法与细节
请查阅完整的 [文档][link_rtfd] 获取高级用法、输入格式、开关与选项的详细说明。
## Python 支持
我们致力于支持所有 [当前积极维护的 Python 版本](https://www.python.org/downloads/) 的全部功能。
不过,某些功能可能因缺乏支持而在旧版本中不可用。
不过,存在更早版本的本工具,支持 `python>=2.7`。
## 内部机制
本工具使用 [CycloneDX Python 库][cyclonedx-library] 生成实际的数据结构,并对其进行序列化与验证。
本工具**不**暴露任何额外的 _公共_ API 或符号 —— 所有代码均为内部实现,可能在版本升级时不经通知变更。
不过,CLI 接口保持稳定 —— 你可以将其用于程序化调用。请参阅文档中的示例。
## 版权与许可
CycloneDX BOM 版权归 OWASP 基金会所有。保留所有权利。
在 Apache 2.0 许可条款下,授予修改与再分发权限。
请查阅 [LICENSE][license_file] 文件获取完整许可。
标签:CycloneDX, Pipenv, Poetry, Python, Python项目, requirements.txt, SBOM, 依赖管理, 动态调试, 包管理, 安全合规, 文档生成, 文档结构分析, 无后门, 环境扫描, 生成器, 硬件无关, 组件分析, 网络代理, 虚拟环境, 跌倒检测, 软件物料清单, 逆向工具