Skip to main content

CLI tool to automatically discover Python environments and generate CycloneDX SBOMs at scale.

Project description

🛡️ PySBOM

PyPI Python License


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

  1. You provide one or more glob patterns that define where environments may exist.
  2. PySBOM discovers matching venv and conda environments within that scope.
  3. It extracts installed package metadata from each discovered environment.
  4. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pysbom-0.1.0.tar.gz (18.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pysbom-0.1.0-py3-none-any.whl (19.5 kB view details)

Uploaded Python 3

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

Hashes for pysbom-0.1.0.tar.gz
Algorithm Hash digest
SHA256 70d177a74b405887b21ca7841e71e027faf7b7630f6c811ecf8df3dd04fb4cbe
MD5 1f2aa89e4f2f522a90b1c5778189199b
BLAKE2b-256 a7fe08ba6cae20a41020110325c6466ee5caa3fbed99a1de2eaf9116d82ad738

See more details on using hashes here.

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

Hashes for pysbom-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6665f75fe1056b2cc0d4cb2aaa932859549fd40dbbcfbbfa1ebe0296ef2d7c22
MD5 c7b01f61b45d276e0a2af5b484bd00e7
BLAKE2b-256 d6b402607578f88b94e00fa23f1535bc348ca8945d0c6385f9e237fd483e61c6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page