docs/dev-tools/backends/pipx.md
pipx is a tool for running Python CLIs in isolated virtualenvs. This is necessary for Python CLIs because it prevents conflicting dependencies between CLIs or between a CLI and Python projects. In essence, this backend lets you add Python CLIs to mise.
To be clear, pipx is not pip and it's not used to manage Python dependencies generally. mise is a tool manager, not a dependency manager like pip, uv, or poetry. You can, however, use mise to install said package managers. You'd want to use the pipx backend to install a CLI like "black", not a library like "NumPy" or "requests".
Somewhat confusingly, the pipx backend will actually default to using uvx (the equivalent of pipx for uv)
if uv is installed. This should just mean that it installs much faster, but see below to disable or configure
since occasionally tools don't work with uvx.
The pipx backend supports the following sources:
The code for this is inside of the mise repository at ./src/backend/pipx.rs.
This relies on having uv (recommended) or pipx installed.
If you have uv installed, mise will use uv tool install under the hood and you don't need to install pipx to run the commands containing "pipx:".
When minimum_release_age is set, mise forwards the cutoff
to transitive Python dependency resolution during install. The uv install path uses uv's
--exclude-newer flag, and the pipx fallback passes pip's --uploaded-prior-to flag.
In case you need pipx for other reasons, you can install it with or without mise.
Here is how to install pipx with mise:
mise use -g python
pip install --user pipx
Other installation instructions
The following installs the latest version of black and sets it as the active version on PATH:
$ mise use -g pipx:psf/black
$ black --version
black, 24.3.0
The version will be set in ~/.config/mise/config.toml with the following format:
[tools]
"pipx:psf/black" = "latest"
If the python version used by a pipx package changes, (by mise or system python), you may need to reinstall the package. This can be done with:
mise install -f pipx:psf/black
Or you can reinstall all pipx packages with:
mise install -f "pipx:*"
mise should do this automatically when using mise up python.
| Description | Usage |
|---|---|
| PyPI shorthand latest version | pipx:black |
| PyPI shorthand for specific version | pipx:[email protected] |
| GitHub shorthand for latest version | pipx:psf/black |
| GitHub shorthand for specific version | pipx:psf/[email protected] |
| Git syntax for latest version | pipx:git+https://github.com/psf/black.git |
| Git syntax for a branch | pipx:git+https://github.com/psf/black.git@main |
| Https with zipfile | pipx:https://github.com/psf/black/archive/18.9b0.zip |
Other syntax may work but is unsupported and untested.
Set these with mise settings set [VARIABLE] [VALUE] or by setting the environment variable listed.
The following tool-options are available for the pipx backend—these
go in [tools] in mise.toml.
extrasInstall additional components.
[tools]
"pipx:harlequin" = { version = "latest", extras = "postgres,s3" }
pipx_argsAdditional arguments to pass to pipx when installing the package.
[tools]
"pipx:black" = { version = "latest", pipx_args = "--preinstall" }
uvxSet to false to always disable uv for this tool.
[tools]
"pipx:ansible" = { version = "latest", uvx = "false", pipx_args = "--include-deps" }
uvx_argsAdditional arguments to pass to uvx when installing the package.
[tools]
"pipx:ansible-core" = { version = "latest", uvx_args = "--with ansible" }