JSON output¶
Most pipx commands accept --output json to print a single machine-readable result envelope on stdout instead of
human-readable text. Selecting JSON suppresses the normal progress messages, so the envelope is the only thing on
stdout.
Envelope¶
The envelope is a JSON object with these keys (serialized with sorted keys):
Key |
Value |
|---|---|
|
Envelope schema version, currently |
|
The command tokens as a list, for example |
|
|
|
The integer process exit code (see Exit codes). |
|
Command-specific payload object. Its fields depend on the command. |
|
List of error objects. Each has |
{
"pipx_result_version": "1",
"command": ["install"],
"status": "success",
"exit_code": 0,
"data": {},
"errors": []
}
A dispatch failure on a JSON-enabled command still speaks the envelope: it prints a status of "error" with a
single error whose code is pipx_error, and exits 1.
Supported commands¶
--output json is available on: install, inject, uninject, expose, unexpose, pin,
unpin, upgrade, upgrade-all, upgrade-shared, uninstall, uninstall-all, reinstall,
reinstall-all, reset, health, repair, manifest lock, manifest sync, interpreter list,
interpreter prune, interpreter upgrade, cache dir, and cache purge.
It is not available on install-all, run, exec, runpip, ensurepath, environment,
completions, or help.
list is different¶
pipx list --output json does not emit the result envelope. It prints the installed-package snapshot that
install-all reads back: an object with pipx_spec_version and a venvs map of environment name to its
metadata (see On-disk metadata). pipx list --json is a legacy alias for the same snapshot.
$ pipx list --output json > pipx.json
$ pipx install-all pipx.json
--json is a legacy alias only on list; every other command uses --output json.