CLI tool to automatically discover Python environments and generate CycloneDX SBOMs at scale.
Project description
🛡️ 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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pysbom-0.1.0.tar.gz.
File metadata
- Download URL: pysbom-0.1.0.tar.gz
- Upload date:
- Size: 18.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
70d177a74b405887b21ca7841e71e027faf7b7630f6c811ecf8df3dd04fb4cbe
|
|
| MD5 |
1f2aa89e4f2f522a90b1c5778189199b
|
|
| BLAKE2b-256 |
a7fe08ba6cae20a41020110325c6466ee5caa3fbed99a1de2eaf9116d82ad738
|
File details
Details for the file pysbom-0.1.0-py3-none-any.whl.
File metadata
- Download URL: pysbom-0.1.0-py3-none-any.whl
- Upload date:
- Size: 19.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6665f75fe1056b2cc0d4cb2aaa932859549fd40dbbcfbbfa1ebe0296ef2d7c22
|
|
| MD5 |
c7b01f61b45d276e0a2af5b484bd00e7
|
|
| BLAKE2b-256 |
d6b402607578f88b94e00fa23f1535bc348ca8945d0c6385f9e237fd483e61c6
|