pipenv (python ecosystem)

Bomly uses this chain when it finds pipenv evidence.

PropertyValue
Package managerpipenv
Ecosystempython
Detector chainpipenv-detector, syft-detector
Evidence patternsPipfile, Pipfile.lock
Install-first supportYes
Native command hintspipenv, syft for bomly-lite

How pipenv resolves

pipenv-detector is hybrid: it prefers pipenv run pip inspect when a Pipenv virtualenv exists and falls back to parsing Pipfile.lock directly when the venv is missing.

PathStrategyCommand
Venv presentBuild toolpipenv run python -m pip inspect
No venvLockfile parserParse Pipfile.lock (no exec)

Network behavior

✅ Both paths are offline-safe. pip inspect reads from the local virtualenv; the lockfile parser reads a committed file.

Prerequisites

  • One of:
    • A Pipenv-managed virtualenv (run pipenv install once and Bomly can inspect it), or
    • A committed Pipfile.lock.
  • For --install-first: pipenv on PATH.

--install-first

pipenv supports --install-first. When passed, Bomly runs pipenv install before resolving the graph.

⚠️ --install-first downloads packages from PyPI and creates / updates the Pipenv-managed virtualenv. Use it on a clean checkout.

bomly scan --install-first

Customizing the install command

Append flags to pipenv install with repeatable --install-arg. Requires --detectors pipenv-detector.

# Include dev dependencies; fail fast on a lockfile drift
bomly scan --install-first --detectors pipenv-detector \
  --install-arg --dev --install-arg --deploy

Reachability (experimental)

Experimental. Reachability is opt-in via --analyze. The feature is stable in shape but may evolve; ecosystem coverage is expanding.

For Pipenv-managed packages, the analyzer is pyreach at Tier-3 (package). See REACHABILITY.md.

Limitations

  • Pipenv 2024+ lock format is preferred; older formats parse but with reduced detail.
  • [dev-packages] is recorded with development scope.