🛡️ PySBOM
Automatically discover Python environments and generate CycloneDX SBOMs at scale — built for security teams.
PySBOM (Python Software Bill of Materials) is a CLI tool that discovers Python environments on servers and generates standardized SBOM files for each of them.
It targets operational infrastructure where multiple venv and conda environments exist across
systems and manual tracking becomes impractical.
PySBOM produces SBOMs in the CycloneDX format, an OWASP-supported industry standard for software bill of materials.
✨ Why PySBOM?
Security teams need reliable visibility into what is installed in production and server environments:
- 🔍 Dependency visibility across systems
- 📦 Standardized SBOM generation
- 🔐 Supply chain transparency
- 📜 License awareness
- ⚙️ Controlled, repeatable automation
PySBOM focuses on deterministic environment discovery (you define the search scope) and scalable SBOM generation across many environments.
⚙️ How It Works
- You provide one or more glob patterns that define where environments may exist.
- PySBOM discovers matching
venvandcondaenvironments within that scope. - It extracts installed package metadata from each discovered environment.
- It generates one CycloneDX SBOM per environment.
This approach ensures predictable, repeatable SBOM generation aligned with your defined infrastructure boundaries.
🔎 How PySBOM Differs from Project-Level SBOM Tools
Project-level tools generate SBOMs for a single application or environment.
PySBOM complements them by automatically discovering Python environments across servers and generating SBOMs at infrastructure scale — helping security teams maintain supply chain visibility across operational systems.
📦 Installation
Install from PyPI:
pip install PySBOM
🚀 Example Usage
Provide glob patterns as positional arguments:
pysbom scan "/opt/*/venv" "/opt/conda/envs/*" "/home/*/miniconda3/envs/*"
Recursive discovery with **
Use ** to match at arbitrary nesting depths (useful when layouts vary between hosts):
pysbom scan "/srv/**/venv" "/home/**/miniconda3/envs/*"
Pattern tips:
- Prefer a small set of known roots (e.g.
/opt,/srv,/home) to keep discovery controlled. - Quote patterns to prevent your shell from expanding them before PySBOM receives them.
- Use
**when you expect inconsistent nesting, but keep the root tight (e.g./srv/**/venv, not/**/venv).
⚠️ Project Status
PySBOM is under active development and not yet production-ready. Interfaces and behavior may change until the first stable release.
📄 License
PySBOM is distributed under the GNU General Public License v3.0
(GPL-3.0-or-later). See the LICENSE file for details.
Metadata
Release files for PySBOM 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pysbom-0.1.0.tar.gz | 18.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pysbom-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 37.9 kB
Release files / pysbom-0.1.0.tar.gz
| Download URL | pysbom-0.1.0.tar.gz |
|---|---|
| Size | 18.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
70d177a74b405887b21ca7841e71e027faf7b7630f6c811ecf8df3dd04fb4cbe
|
|
BLAKE2b-256 checksum How to use checksums |
a7fe08ba6cae20a41020110325c6466ee5caa3fbed99a1de2eaf9116d82ad738
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|
Release files / pysbom-0.1.0-py3-none-any.whl
| Download URL | pysbom-0.1.0-py3-none-any.whl |
|---|---|
| Size | 19.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6665f75fe1056b2cc0d4cb2aaa932859549fd40dbbcfbbfa1ebe0296ef2d7c22
|
|
BLAKE2b-256 checksum How to use checksums |
d6b402607578f88b94e00fa23f1535bc348ca8945d0c6385f9e237fd483e61c6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|