PIPX(1)

PIPX πŸ’– pipx(1) β€” the Generated Python Manual page, but make it make sense

okay bestie, sit DOWN. this is pipx(1) from the Generated Python Manual and it's literally the glow-up your Python CLI life has been waiting for. we're doing this in parts so hydrate πŸ’§


✨ NAME ✨

pipx β€” Install and execute apps from Python packages. that's it. that's the whole vibe. πŸŽ€


✨ SYNOPSIS ✨

pipx [-h] [--version] {install,install-
all,uninject,inject,pin,unpin,upgrade,upgrade-all,upgrade-
shared,uninstall,uninstall-all,reinstall,reinstall-
all,list,interpreter,run,runpip,ensurepath,environment,completions,help}
...

✨ DESCRIPTION ✨

Install and execute apps from Python packages. no cap, that's the entire mission statement 🫢

Binaries can either be installed globally into isolated Virtual Environments, or run directly in a temporary Virtual Environment. pick your fighter ✨

Virtual Environment location is ~/.local/share/pipx/venvs. Symlinks to apps are placed in ~/.local/bin. Symlinks to manual pages are placed in ~/.local/share/man. yes, your man pages get their own little home, they deserve it πŸ’…

optional environment variables 🌸

  • PIPX_HOME β€” Overrides default pipx location. Virtual Environments will be installed to $PIPX_HOME/venvs.
  • PIPX_GLOBAL_HOME β€” Used instead of PIPX_HOME when the --global option is given.
  • PIPX_BIN_DIR β€” Overrides location of app installations. Apps are symlinked or copied here.
  • PIPX_GLOBAL_BIN_DIR β€” Used instead of PIPX_BIN_DIR when the --global option is given.
  • PIPX_MAN_DIR β€” Overrides location of manual pages installations. Manual pages are symlinked or copied here.
  • PIPX_GLOBAL_MAN_DIR β€” Used instead of PIPX_MAN_DIR when the --global option is given.
  • PIPX_DEFAULT_PYTHON β€” Overrides default python used for commands.
  • PIPX_DEFAULT_BACKEND β€” Overrides which backend (pip or uv) is used for new venvs.
  • PIPX_DISABLE_SHARED_LIBS_AUTO_UPGRADE β€” Skips automatic shared library upgrades.
  • PIPX_USE_EMOJI β€” Overrides emoji behavior. Default value varies based on platform. (yes this is REAL and yes it's iconic 😭)
  • PIPX_HOME_ALLOW_SPACE β€” Overrides default warning on spaces in the home path.

✨ OPTIONS ✨

  • --version β€” Print version and exit. short and sweet, main character behavior πŸ‘‘

✨ SUBCOMMANDS ✨ πŸ¦‹

so many little guys. here's the whole roster:

  • pipx install β€” Install a package
  • pipx install-all β€” Install all packages
  • pipx uninject β€” Uninstall injected packages from an existing Virtual Environment
  • pipx inject β€” Install packages into an existing Virtual Environment
  • pipx pin β€” Pin the specified package to prevent it from being upgraded
  • pipx unpin β€” Unpin the specified package
  • pipx upgrade β€” Upgrade a package
  • pipx upgrade-all β€” Upgrade all packages. Runs pip install -U <pkgname> for each package.
  • pipx upgrade-shared β€” Upgrade shared libraries.
  • pipx uninstall β€” Uninstall a package
  • pipx uninstall-all β€” Uninstall all packages
  • pipx reinstall β€” Reinstall a package
  • pipx reinstall-all β€” Reinstall all packages
  • pipx list β€” List installed packages
  • pipx interpreter β€” Interact with interpreters managed by pipx
  • pipx run β€” Download the latest version of a package to a temporary virtual environment, then run an app from it. Also compatible with local __pypackages__ directory (experimental).
  • pipx runpip β€” Run pip in an existing pipx-managed Virtual Environment
  • pipx ensurepath β€” Ensure directories necessary for pipx operation are in your PATH environment variable.
  • pipx environment β€” Print a list of environment variables and paths used by pipx.
  • pipx completions β€” Print instructions on enabling shell completions for pipx
  • pipx help β€” Show help for pipx or a command

COMMAND pipx install πŸ’–

usage πŸŽ€

usage: pipx install [-h] [--quiet] [--verbose] [--global] [--include-deps]
                    [--force] [--suffix SUFFIX] [--python PYTHON]
                    [--fetch-python {always,missing,never} |
                    --fetch-missing-python] [--preinstall PREINSTALL]
                    [--system-site-packages] [--index-url INDEX_URL]
                    [--editable] [--pip-args PIP_ARGS] [--backend {pip,uv}]
                    package_spec [package_spec ...]

okay so this is THE command. the moment. the install command is the preferred way to globally install apps from python packages on your system. It creates an isolated virtual environment for the package, then ensures the package's apps are accessible on your $PATH. The package's manual pages installed in share/man/man[1-9] can be viewed with man on an operating system where it is available and the path in the environment variable PIPX_MAN_DIR (default: ~/.local/share/man) is in the man search path ($MANPATH).

The result: apps you can run from anywhere, located in packages you can cleanly upgrade or uninstall. Guaranteed to not have dependency version conflicts or interfere with your OS's python packages. sudo is not required to do this. literally no sudo, no drama, no "permission denied" crying at 2am 😭🫢

the shapes it comes in ✨

pipx install PACKAGE_SPEC ...  pipx install --python PYTHON PACKAGE_SPEC
pipx install VCS_URL pipx install ./LOCAL_PATH pipx install ZIP_FILE
pipx install TAR_GZ_FILE

The PACKAGE_SPEC argument is passed directly to pip install. straight through, no middleman, we respect it πŸ’…

Virtual Environments will be installed to $PIPX_HOME/venvs. The default pipx home location is ~/.local/share/pipx and can be overridden by setting the environment variable PIPX_HOME. If the --global option is used, the default pipx home location instead is /opt/pipx and can be overridden by setting the environment variable PIPX_GLOBAL_HOME.

The default app location is ~/.local/bin and can be overridden by setting the environment variable PIPX_BIN_DIR. If the --global option is used, the default app location instead is /usr/local/bin and can be overridden by setting the environment variable PIPX_GLOBAL_BIN_DIR.

The default manual pages location is ~/.local/share/man and can be overridden by setting the environment variable PIPX_MAN_DIR. If the --global option is used, the default manual pages location instead is /usr/local/share/man and can be overridden by setting the environment variable PIPX_GLOBAL_MAN_DIR.

The default python executable used to install a package is /usr/bin/python3.14 and can be overridden by setting the environment variable PIPX_DEFAULT_PYTHON. (three point fourteen bestie, we are LIVING in the future 🌈)

positional argument 🎯

  • package_spec β€” package name(s) or pip installation spec(s)

✨ OPTIONS pipx install ✨ πŸ’…

  • --quiet, -q β€” Give less output. May be used multiple times corresponding to the ERROR and CRITICAL logging levels. The count maxes out at 2. (shhh mode 🀫)
  • --verbose, -v β€” Give more output. May be used multiple times corresponding to the INFO, DEBUG and NOTSET logging levels. The count maxes out at 3. (tell me EVERYTHING πŸ—£οΈ)
  • --global β€” Perform action globally for all users.
  • --include-deps β€” Include apps of dependent packages
  • --force, -f β€” Modify existing virtual environment and files in PIPX_BIN_DIR and PIPX_MAN_DIR
  • --suffix SUFFIX β€” Optional suffix for virtual environment and executable names.
  • --python PYTHON β€” Python to install with. Possible values can be the executable name (python3.11), the version of an available system Python or to pass to py launcher (3.11), or the full path to the executable. Requires Python 3.10 or above.
  • --fetch-python {always,missing,never} β€” When to fetch a standalone Python build from python-build-standalone. 'always' always downloads (ignores any system Python); 'missing' downloads only when the requested version is not found locally; 'never' never downloads. Defaults to PIPX_FETCH_PYTHON, or 'never'.
  • --fetch-missing-python β€” Deprecated: alias for --fetch-python=missing. (it's giving legacy, still works tho 🫢)
  • --preinstall PREINSTALL β€” Optional package to be installed into the Virtual Environment before installing the main package. Use this flag multiple times if you want to preinstall multiple packages.
  • --system-site-packages β€” Give the virtual environment access to the system site-packages dir.
  • --index-url INDEX_URL, -i INDEX_URL β€” Base URL of Python Package Index
  • --editable, -e β€” Install a project in editable mode
  • --pip-args PIP_ARGS β€” Arbitrary pip arguments to pass directly to pip install/upgrade commands. Under the uv backend a small subset is translated (--index-url, --extra-index-url, --find-links, --pre); other flags raise an error so behaviour stays explicit.
  • --backend {pip,uv} β€” Backend used for creating venvs and managing packages. Defaults to PIPX_DEFAULT_BACKEND when set, else 'uv' when uv is available (via the pipx[uv] extra or on PATH), else 'pip'. Existing venvs always honor their recorded backend unless this flag is given.
lowkey important: that --pip-args one? under uv, only a small subset gets translated and other flags will straight up raise an error. it's on purpose so behaviour stays explicit. not a bug, a boundary bestie 🚧

COMMAND pipx install-all 🌸

usage πŸŽ€

usage: pipx install-all [-h] [--quiet] [--verbose] [--global] [--force]
                        [--python PYTHON]
                        [--fetch-python {always,missing,never} |
                        --fetch-missing-python] [--system-site-packages]
                        [--index-url INDEX_URL] [--editable]
                        [--pip-args PIP_ARGS] [--backend {pip,uv}]
                        spec_metadata_file

Installs all the packages according to spec metadata file. it's the "do the whole list at once" button and honestly? iconic πŸ‘‘

positional argument 🎯

  • spec_metadata_file β€” Spec metadata file generated from pipx list --json

✨ OPTIONS for pipx install-all ✨

  • --quiet, -q β€” bestie, give me less. Stack it up to match the ERROR and CRITICAL logging levels, and the count maxes out at 2. πŸ’€
  • --verbose, -v β€” okay now give me more. Stack it up to match the INFO, DEBUG and NOTSET logging levels, and the count maxes out at 3. πŸ—£οΈ
  • --global β€” do the thing globally, for all users. πŸ‘‘
  • --force, -f β€” modify the existing virtual environment and the files in PIPX_BIN_DIR and PIPX_MAN_DIR. πŸ”§
  • --python PYTHON β€” the Python to install with. Possible values can be the executable name (python3.11), the version of an available system Python or something to pass to the py launcher (3.11), or the full path to the executable. Requires Python 3.10 or above. 🐍
  • --fetch-python {always,missing,never} β€” when to fetch a standalone Python build from python-build-standalone. 'always' always downloads (ignores any system Python); 'missing' downloads only when the requested version is not found locally; 'never' never downloads. Defaults to PIPX_FETCH_PYTHON, or 'never'. ✨
  • --fetch-missing-python β€” Deprecated: alias for --fetch-python=missing. (she's retired but still showing up to the party πŸ’€)
  • --system-site-packages β€” give the virtual environment access to the system site-packages dir. 🫢
  • --index-url INDEX_URL, -i INDEX_URL β€” base URL of Python Package Index. 🌐
  • --editable, -e β€” install a project in editable mode. ✏️
  • --pip-args PIP_ARGS β€” arbitrary pip arguments to pass directly to pip install/upgrade commands. Under the uv backend a small subset is translated (--index-url, --extra-index-url, --find-links, --pre); other flags raise an error so behaviour stays explicit. πŸ‘€
  • --backend {pip,uv} β€” backend used for creating venvs and managing packages. Defaults to PIPX_DEFAULT_BACKEND when set, else 'uv' when uv is available (via the pipx[uv] extra or on PATH), else 'pip'. Existing venvs always honor their recorded backend unless this flag is given. 🧠

πŸ’… COMMAND pipx uninject πŸ’…

usage: pipx uninject [-h] [--quiet] [--verbose] [--global] [--leave-deps]
                     package dependencies [dependencies ...]

Uninstalls injected packages from an existing pipx-managed virtual environment. Like un-inviting someone from the group chat, but for packages. πŸšͺ

  • package β€” name of the existing pipx-managed Virtual Environment to inject into.
  • dependencies β€” the package names to uninject from the Virtual Environment.

✨ OPTIONS for pipx uninject ✨

  • --quiet, -q β€” less output, queen. Stack it to match the ERROR and CRITICAL logging levels; count maxes out at 2.
  • --verbose, -v β€” more output. Stack it to match the INFO, DEBUG and NOTSET logging levels; count maxes out at 3.
  • --global β€” perform action globally for all users. πŸ‘‘
  • --leave-deps β€” only uninstall the main injected package but leave its dependencies installed. Iconic minimal-effort behaviour, honestly. πŸ“

πŸ’– COMMAND pipx inject πŸ’–

usage: pipx inject [-h] [--quiet] [--verbose] [--global] [-r file]
                   [--include-apps] [--include-deps]
                   [--system-site-packages]
                   [--index-url INDEX_URL] [--editable] [--pip-args PIP_ARGS]
                   [--force] [--with-suffix] [--backend {pip,uv}]
                   package [dependencies ...]

Installs packages to an existing pipx-managed virtual environment. Sliding extra packages straight into an env that's already living its best life. πŸ’‰

  • package β€” name of the existing pipx-managed Virtual Environment to inject into.
  • dependencies β€” the packages to inject into the Virtual Environment β€” either package name or pip package spec.

✨ OPTIONS for pipx inject ✨

  • --quiet, -q β€” give less output. May be used multiple times corresponding to the ERROR and CRITICAL logging levels. The count maxes out at 2.
  • --verbose, -v β€” give more output. May be used multiple times corresponding to the INFO, DEBUG and NOTSET logging levels. The count maxes out at 3.
  • --global β€” perform action globally for all users. πŸ‘‘
  • -r file, --requirement file β€” file containing the packages to inject into the Virtual Environment β€” one package name or pip package spec per line. May be specified multiple times. πŸ“„
  • --include-apps β€” add apps from the injected packages onto your PATH and expose their manual pages. 🌈
  • --include-deps β€” include apps of dependent packages. Implies --include-apps. πŸͺ†
  • --system-site-packages β€” give the virtual environment access to the system site-packages dir.
  • --index-url INDEX_URL, -i INDEX_URL β€” base URL of Python Package Index. 🌐
  • --editable, -e β€” install a project in editable mode. ✏️
  • --pip-args PIP_ARGS β€” arbitrary pip arguments to pass directly to pip install/upgrade commands. Under the uv backend a small subset is translated (--index-url, --extra-index-url, --find-links, --pre); other flags raise an error so behaviour stays explicit. πŸ‘€
  • --force, -f β€” modify existing virtual environment and files in PIPX_BIN_DIR and PIPX_MAN_DIR. πŸ”§
  • --with-suffix β€” add the suffix (if given) of the Virtual Environment to the packages to inject. 🏷️
  • --backend {pip,uv} β€” backend used for creating venvs and managing packages. Defaults to PIPX_DEFAULT_BACKEND when set, else 'uv' when uv is available (via the pipx[uv] extra or on PATH), else 'pip'. Existing venvs always honor their recorded backend unless this flag is given. 🧠

πŸ“Œ COMMAND pipx pin πŸ“Œ

usage: pipx pin [-h] [--quiet] [--verbose] [--global] [--injected-only]
                [--skip SKIP [SKIP ...]]
                package

Pin the specified package to prevent it from being upgraded. Basically putting a "do not touch, she's thriving" sticker on it. πŸ›‘

  • package β€” installed package to pin.

✨ OPTIONS for pipx pin ✨

  • --quiet, -q β€” give less output. May be used multiple times corresponding to the ERROR and CRITICAL logging levels. The count maxes out at 2.
  • --verbose, -v β€” give more output. May be used multiple times corresponding to the INFO, DEBUG and NOTSET logging levels. The count maxes out at 3.
  • --global β€” perform action globally for all users. πŸ‘‘
  • --injected-only β€” pin injected packages in venv only, so that they will not be upgraded during upgrade operations. Note that this should not be passed if you wish to pin both main package and injected packages. ⚠️
  • --skip SKIP [SKIP ...] β€” skip these packages. Implies --injected-only.

πŸ¦‹ COMMAND pipx unpin πŸ¦‹

usage: pipx unpin [-h] [--quiet] [--verbose] [--global] package

Unpin the specified package and all injected packages in its venv to allow them to be upgraded. Free them, bestie, they've been in the house too long. πŸ•ŠοΈ

  • package β€” installed package to unpin.

✨ OPTIONS for pipx unpin ✨

  • --quiet, -q β€” give less output. May be used multiple times corresponding to the ERROR and CRITICAL logging levels. The count maxes out at 2.
  • --verbose, -v β€” give more output. May be used multiple times corresponding to the INFO, DEBUG and NOTSET logging levels. The count maxes out at 3.
  • --global β€” perform action globally for all users. πŸ‘‘

πŸ”₯ COMMAND pipx upgrade πŸ”₯

usage: pipx upgrade [-h] [--quiet] [--verbose] [--global] [--include-injected]
                    [--force] [--system-site-packages] [--index-url INDEX_URL]
                    [--editable] [--pip-args PIP_ARGS] [--install]
                    [--python PYTHON] [--fetch-python {always,missing,never} |
                    --fetch-missing-python] [--backend {pip,uv}]
                    packages [packages ...]

Upgrade package(s) in pipx-managed Virtual Environment(s) by running 'pip install --upgrade PACKAGE'. Glow-up time. ✨

  • packages β€” package names(s) to upgrade.

✨ OPTIONS for pipx upgrade ✨

  • --quiet, -q β€” give less output. May be used multiple times corresponding to the ERROR and CRITICAL logging levels. The count maxes out at 2.
  • --verbose, -v β€” give more output. May be used multiple times corresponding to the INFO, DEBUG and NOTSET logging levels. The count maxes out at 3.
  • --global β€” perform action globally for all users. πŸ‘‘
  • --include-injected β€” also upgrade packages injected into the main app's environment. πŸ’‰
  • --force, -f β€” modify existing virtual environment and files in PIPX_BIN_DIR and PIPX_MAN_DIR. πŸ”§
  • --system-site-packages β€” give the virtual environment access to the system site-packages dir.
  • --index-url INDEX_URL, -i INDEX_URL β€” base URL of Python Package Index. 🌐
  • --editable, -e β€” install a project in editable mode. ✏️
  • --pip-args PIP_ARGS β€” arbitrary pip arguments to pass directly to pip install/upgrade commands. Under the uv backend a small subset is translated (--index-url, --extra-index-url, --find-links, --pre); other flags raise an error so behaviour stays explicit. πŸ‘€
  • --install β€” install package spec if missing.
  • --python PYTHON β€” Python to install with. Possible values can be the executable name (python3.11), the version of an available system Python or to pass to py launcher (3.11), or the full path to the executable. Requires Python 3.10 or above. 🐍
  • --fetch-python {always,missing,never} β€” when to fetch a standalone Python build from python-build-standalone. 'always' always downloads (ignores any system Python); 'missing' downloads only when the requested version is not found locally; 'never' never downloads. Defaults to PIPX_FETCH_PYTHON, or 'never'. ✨
  • --fetch-missing-python β€” Deprecated: alias for --fetch-python=missing.
  • --backend {pip,uv} β€” backend used for creating venvs and managing packages. Defaults to PIPX_DEFAULT_BACKEND when set, else 'uv' when uv is available (via the pipx[uv] extra or on PATH), else 'pip'. Existing venvs always honor their recorded backend unless this flag is given. 🧠

πŸ‘‘ COMMAND pipx upgrade-all πŸ‘‘

usage: pipx upgrade-all [-h] [--quiet] [--verbose] [--global]
                        [--include-injected] [--skip SKIP [SKIP ...]]
                        [--force] [--system-site-packages]
                        [--index-url INDEX_URL] [--editable]
                        [--pip-args PIP_ARGS] [--backend {pip,uv}]

Upgrades all packages within their virtual environments by running 'pip install --upgrade PACKAGE'. Every single one of them. No stragglers. πŸ’–

OPTIONS ✨ pipx upgrade-all

  • --quiet, -q β€” gives you less output. Stack it up multiple times to match the ERROR and CRITICAL logging levels, bestie. The count maxes out at 2.
  • --verbose, -v β€” gives you more output. Use it multiple times to match the INFO, DEBUG and NOTSET logging levels. The count maxes out at 3.
  • --global β€” do the thing globally, for all users. πŸ’…
  • --include-injected β€” also upgrade the packages injected into the main app's environment 🫢
  • --skip SKIP [SKIP ...] β€” skip these packages, periodt. 🚫
  • --force, -f β€” modify the existing virtual environment and the files in PIPX_BIN_DIR and PIPX_MAN_DIR
  • --system-site-packages β€” gives the virtual environment access to the system site-packages dir.
  • --index-url INDEX_URL, -i INDEX_URL β€” base URL of the Python Package Index 🌐
  • --editable, -e β€” install a project in editable mode
  • --pip-args PIP_ARGS β€” arbitrary pip arguments to pass directly to pip install/upgrade commands. Under the uv backend a small subset gets translated (--index-url, --extra-index-url, --find-links, --pre); other flags raise an error so the behaviour stays explicit, no surprises ✨
  • --backend {pip,uv} β€” the backend used for creating venvs and managing packages. Defaults to PIPX_DEFAULT_BACKEND when set, else 'uv' when uv is available (via the pipx[uv] extra or on PATH), else 'pip'. Existing venvs always honor their recorded backend unless this flag is given. πŸ‘‘

COMMAND 🌸 pipx upgrade-shared

usage: pipx upgrade-shared [-h] [--quiet] [--verbose] [--global]
                           [--pip-args PIP_ARGS]

Upgrade the shared libraries. glowed up and ready πŸ’–

OPTIONS πŸ’œ pipx upgrade-shared

  • --quiet, -q β€” give less output. May be used multiple times corresponding to the ERROR and CRITICAL logging levels. The count maxes out at 2.
  • --verbose, -v β€” give more output. May be used multiple times corresponding to the INFO, DEBUG and NOTSET logging levels. The count maxes out at 3.
  • --global β€” perform action globally for all users. πŸ’…
  • --pip-args PIP_ARGS β€” arbitrary pip arguments to pass directly to pip install/upgrade commands

COMMAND πŸ¦‹ pipx uninstall

usage: pipx uninstall [-h] [--quiet] [--verbose] [--global] package

Uninstalls a pipx-managed Virtual Environment by deleting it and any files that point to its apps. it's giving clean slate energy ✨

package

OPTIONS πŸ’œ pipx uninstall

  • --quiet, -q β€” give less output. May be used multiple times corresponding to the ERROR and CRITICAL logging levels. The count maxes out at 2.
  • --verbose, -v β€” give more output. May be used multiple times corresponding to the INFO, DEBUG and NOTSET logging levels. The count maxes out at 3.
  • --global β€” perform action globally for all users. πŸ’…

COMMAND πŸŽ€ pipx uninstall-all

usage: pipx uninstall-all [-h] [--quiet] [--verbose] [--global]

Uninstall all pipx-managed packages. no cap, every single one 😭

OPTIONS πŸ’œ pipx uninstall-all

  • --quiet, -q β€” give less output. May be used multiple times corresponding to the ERROR and CRITICAL logging levels. The count maxes out at 2.
  • --verbose, -v β€” give more output. May be used multiple times corresponding to the INFO, DEBUG and NOTSET logging levels. The count maxes out at 3.
  • --global β€” perform action globally for all users. πŸ’…

COMMAND ⭐ pipx reinstall

usage: pipx reinstall [-h] [--quiet] [--verbose] [--global] [--python
PYTHON]
                      [--fetch-python {always,missing,never} |
                      --fetch-missing-python] [--backend {pip,uv}]
                      package

Reinstalls a package. πŸ”

The package is uninstalled, then installed with pipx install PACKAGE using the same options used in the original install of PACKAGE. it remembers what you asked for the first time, iconic behaviour fr fr

package

OPTIONS πŸ’œ pipx reinstall

  • --quiet, -q β€” give less output. May be used multiple times corresponding to the ERROR and CRITICAL logging levels. The count maxes out at 2.
  • --verbose, -v β€” give more output. May be used multiple times corresponding to the INFO, DEBUG and NOTSET logging levels. The count maxes out at 3.
  • --global β€” perform action globally for all users. πŸ’…
  • --python PYTHON β€” the Python to install with. Possible values can be the executable name (python3.11), the version of an available system Python or one to pass to the py launcher (3.11), or the full path to the executable. Requires Python 3.10 or above. 🐍
  • --fetch-python {always,missing,never} β€” when to fetch a standalone Python build from python-build-standalone. 'always' always downloads (ignores any system Python); 'missing' downloads only when the requested version is not found locally; 'never' never downloads. Defaults to PIPX_FETCH_PYTHON, or 'never'.
  • --fetch-missing-python β€” Deprecated: alias for --fetch-python=missing.
  • --backend {pip,uv} β€” backend used for creating venvs and managing packages. Defaults to PIPX_DEFAULT_BACKEND when set, else 'uv' when uv is available (via the pipx[uv] extra or on PATH), else 'pip'. Existing venvs always honor their recorded backend unless this flag is given. πŸ‘‘

COMMAND 🌈 pipx reinstall-all

usage: pipx reinstall-all [-h] [--quiet] [--verbose] [--global]
                          [--python PYTHON]
                          [--fetch-python {always,missing,never} |
                          --fetch-missing-python] [--skip SKIP [SKIP
...]]
                          [--backend {pip,uv}]

Reinstalls all packages. ✨

Packages are uninstalled, then installed with pipx install PACKAGE with the same options used in the original install of PACKAGE. This is useful if you upgraded to a new version of Python and want all your packages to use the latest as well. new Python, who dis πŸ’…

OPTIONS πŸ’œ pipx reinstall-all

  • --quiet, -q β€” give less output. May be used multiple times corresponding to the ERROR and CRITICAL logging levels. The count maxes out at 2.
  • --verbose, -v β€” give more output. May be used multiple times corresponding to the INFO, DEBUG and NOTSET logging levels. The count maxes out at 3.
  • --global β€” perform action globally for all users. πŸ’…
  • --python PYTHON β€” Python to install with. Possible values can be the executable name (python3.11), the version of an available system Python or to pass to py launcher (3.11), or the full path to the executable. Requires Python 3.10 or above. 🐍
  • --fetch-python {always,missing,never} β€” when to fetch a standalone Python build from python-build-standalone. 'always' always downloads (ignores any system Python); 'missing' downloads only when the requested version is not found locally; 'never' never downloads. Defaults to PIPX_FETCH_PYTHON, or 'never'.
  • --fetch-missing-python β€” Deprecated: alias for --fetch-python=missing.
  • --skip SKIP [SKIP ...] β€” skip these packages 🚫
  • --backend {pip,uv} β€” backend used for creating venvs and managing packages. Defaults to PIPX_DEFAULT_BACKEND when set, else 'uv' when uv is available (via the pipx[uv] extra or on PATH), else 'pip'. Existing venvs always honor their recorded backend unless this flag is given. πŸ‘‘

COMMAND 🧚 pipx list

usage: pipx list [-h] [--quiet] [--verbose] [--global]
[--include-injected]
                 [--json | --short | --pinned | --skip-maintenance]

List the packages and apps installed with pipx. your little roster, bestie πŸ“‹πŸ’–

OPTIONS πŸ’œ pipx list

  • --quiet, -q β€” give less output. May be used multiple times corresponding to the ERROR and CRITICAL logging levels. The count maxes out at 2.
  • --verbose, -v β€” give more output. May be used multiple times corresponding to the INFO, DEBUG and NOTSET logging levels. The count maxes out at 3.
  • --global β€” perform action globally for all users. πŸ’…
  • --include-injected β€” show packages injected into the main app's environment 🫢
  • --json β€” output rich data in json format.
  • --short β€” list packages only.
  • --pinned β€” list pinned packages only. Pass --include-injected at the same time to list injected packages that were pinned. πŸ“Œ
  • --skip-maintenance β€” (deprecated) no-op. literally does nothing, don't stress πŸ“

COMMAND 🌸 pipx interpreter

usage: pipx interpreter [-h] [--quiet] [--verbose] [--global]
                        {list,prune,upgrade} ...

Interact with interpreters managed by pipx. 🐍✨

OPTIONS πŸ’œ pipx interpreter

  • --quiet, -q β€” give less output. May be used multiple times corresponding to the ERROR and CRITICAL logging levels. The count maxes out at 2.
  • --verbose, -v β€” give more output. May be used multiple times corresponding to the INFO, DEBUG and NOTSET logging levels. The count maxes out at 3.
  • --global β€” perform action globally for all users. πŸ’…

SUBCOMMANDS 🌈 pipx interpreter

  • pipx interpreter list β€” list available interpreters
  • pipx interpreter prune β€” prune unused interpreters
  • pipx interpreter upgrade β€” upgrade installed interpreters to the latest available micro/patch version

COMMAND πŸ¦‹ pipx interpreter list

usage: pipx interpreter list [-h]

List available interpreters πŸ‘€


COMMAND πŸŽ€ pipx interpreter prune

usage: pipx interpreter prune [-h]

Prune unused interpreters βœ‚οΈ no dead weight around here


COMMAND ⭐ pipx interpreter upgrade

usage: pipx interpreter upgrade [-h]

Upgrade installed interpreters to the latest available micro/patch version πŸ”₯


COMMAND πŸ’… pipx run

usage: pipx run [-h] [--quiet] [--verbose] [--global] [--no-cache]
                [--no-path-check] [--path] [--pypackages] [--with WITH_]
                [--spec SPEC] [--python PYTHON]
                [--fetch-python {always,missing,never} |
                --fetch-missing-python] [--system-site-packages]
                [--index-url INDEX_URL] [--editable] [--pip-args
PIP_ARGS]
                [--backend {pip,uv}]
                app ...

Download the latest version of a package to a temporary virtual environment, then run an app from it. The environment will be cached and reused for up to 14 days. This means subsequent calls to 'run' for the same package will be faster since they can reuse the cached Virtual Environment. speed, bestie 🏎️✨

In support of PEP 582 'run' will use apps found in a local __pypackages__ directory, if present. Please note that this behavior is experimental, and acts as a companion tool to pythonloc. It may be modified or removed in the future. See https://github.com/cs01/pythonloc.

heads up: that __pypackages__ thing is experimental β€” it could get changed or yeeted entirely later, so don't build your whole personality around it πŸ™ˆ

app ... β€” app/package name and any arguments to be passed to it 🫢

✨ OPTIONS 'pipx run' ✨

okay bestie these are the little dials and switches for pipx run πŸ’… every single one, no skipping

  • --quiet, -q β€” less yapping please πŸ™ˆ stack it up multiple times to match the ERROR and CRITICAL logging levels, but it caps out at 2. two is the limit, she's done.
  • --verbose, -v β€” more yapping actually πŸ—£οΈ stack it up multiple times to match the INFO, DEBUG and NOTSET logging levels, and the count maxes out at 3.
  • --global β€” do the thing globally, for all users πŸ‘‘
  • --no-cache β€” don't reuse a cached virtual environment even if one exists, we're starting fresh bestie ✨
  • --no-path-check β€” skip checking whether the app is already on PATH
  • --path β€” treat the app name as a local path πŸ“
  • --pypackages β€” require the app to be run from the local __pypackages__ directory
  • --with WITH_ β€” extra dependencies to add to the temporary environment πŸŽ€
  • --spec SPEC β€” the package name or a specific installation source that gets passed to pip. It runs pip install -U SPEC. Like --spec mypackage==2.0.0 or --spec git+https://github.com/user/repo.git@branch 🌈
  • --python PYTHON β€” which Python to install with 🐍 possible values are the executable name (python3.11), the version of an available system Python or a version to pass to the py launcher (3.11), or the full path to the executable. Requires Python 3.10 or above.
  • --fetch-python {always,missing,never} β€” when to fetch a standalone Python build from python-build-standalone. 'always' always downloads (ignores any system Python), 'missing' downloads only when the requested version isn't found locally, 'never' never downloads. Defaults to PIPX_FETCH_PYTHON, or 'never'.
  • --fetch-missing-python β€” deprecated 🚩 it's just an alias for --fetch-python=missing.
  • --system-site-packages β€” give the virtual environment access to the system site-packages dir πŸ‘€
  • --index-url INDEX_URL, -i INDEX_URL β€” base URL of the Python Package Index
  • --editable, -e β€” install a project in editable mode ✏️
  • --pip-args PIP_ARGS β€” arbitrary pip arguments passed straight through to the pip install/upgrade commands. Under the uv backend a small subset gets translated (--index-url, --extra-index-url, --find-links, --pre); other flags raise an error so behaviour stays explicit. no sneaky surprises fr fr
  • --backend {pip,uv} β€” the backend used for creating venvs and managing packages. Defaults to PIPX_DEFAULT_BACKEND when it's set, otherwise 'uv' when uv is available (via the pipx[uv] extra or on PATH), otherwise 'pip'. Existing venvs always honor their recorded backend unless you actually pass this flag. πŸ’…

🧚 COMMAND 'pipx runpip' 🧚

usage: pipx runpip [-h] [--quiet] [--verbose] [--global] package ...

Run pip inside an existing pipx-managed Virtual Environment 🫢

  • package β€” name of the existing pipx-managed Virtual Environment you want to run pip in
  • pipargs β€” arguments to forward to the pip command

✨ OPTIONS 'pipx runpip' ✨

  • --quiet, -q β€” less output please. May be used multiple times corresponding to the ERROR and CRITICAL logging levels. The count maxes out at 2.
  • --verbose, -v β€” more output please. May be used multiple times corresponding to the INFO, DEBUG and NOTSET logging levels. The count maxes out at 3.
  • --global β€” perform the action globally for all users πŸ‘‘

🌸 COMMAND 'pipx ensurepath' 🌸

usage: pipx ensurepath [-h] [--quiet] [--verbose] [--global] [--prepend]
                       [--force] [--all-shells] [--dry-run]

Make sure the directory where pipx stores apps is in your PATH environment variable πŸ›£οΈ Also, if pipx was installed via pip install --user, make sure pipx itself is in your PATH. Heads up bestie: running this may modify your shell's configuration file(s), like '~/.bashrc'. it's giving "helpful but also touching your dotfiles" 😭

✨ OPTIONS 'pipx ensurepath' ✨

  • --quiet, -q β€” give less output. May be used multiple times corresponding to the ERROR and CRITICAL logging levels. The count maxes out at 2.
  • --verbose, -v β€” give more output. May be used multiple times corresponding to the INFO, DEBUG and NOTSET logging levels. The count maxes out at 3.
  • --global β€” perform the action globally for all users πŸ‘‘
  • --prepend β€” prepend directories to your PATH instead of appending. super useful if you want to prioritize pipx apps over system apps πŸ’–
  • --force, -f β€” add text to your shell's config file even if it looks like your PATH already contains paths to pipx and pipx-install apps. she's not asking, she's doing it
  • --all-shells β€” add directories to PATH in all shells instead of just the current one 🐚🐚🐚
  • --dry-run β€” report what would be added to PATH without modifying PATH or any shell config file. window shopping only πŸ›οΈ

πŸ¦‹ COMMAND 'pipx environment' πŸ¦‹

usage: pipx environment [-h] [--quiet] [--verbose] [--global]
                        [--value VARIABLE]

Prints the names and current values of environment variables used by pipx, followed by internal pipx variables which are derived from the environment variables and platform specific default values πŸ”

Available variables: PIPX_HOME, PIPX_GLOBAL_HOME, PIPX_BIN_DIR, PIPX_GLOBAL_BIN_DIR, PIPX_MAN_DIR, PIPX_GLOBAL_MAN_DIR, PIPX_SHARED_LIBS, PIPX_DEFAULT_PYTHON, PIPX_DEFAULT_BACKEND, PIPX_FETCH_MISSING_PYTHON, PIPX_FETCH_PYTHON, PIPX_DISABLE_SHARED_LIBS_AUTO_UPGRADE, PIPX_USE_EMOJI, PIPX_HOME_ALLOW_SPACE

✨ OPTIONS 'pipx environment' ✨

  • --quiet, -q β€” give less output. May be used multiple times corresponding to the ERROR and CRITICAL logging levels. The count maxes out at 2.
  • --verbose, -v β€” give more output. May be used multiple times corresponding to the INFO, DEBUG and NOTSET logging levels. The count maxes out at 3.
  • --global β€” perform the action globally for all users πŸ‘‘
  • --value VARIABLE, -V VARIABLE β€” print the value of the variable. just the value, bestie, no extras ⭐

πŸŽ€ COMMAND 'pipx completions' πŸŽ€

usage: pipx completions [-h] [--quiet] [--verbose] [--global]

Print instructions on enabling shell completions for pipx ⌨️✨ (yes she does tab-complete, icon behaviour)

✨ OPTIONS 'pipx completions' ✨

  • --quiet, -q β€” give less output. May be used multiple times corresponding to the ERROR and CRITICAL logging levels. The count maxes out at 2.
  • --verbose, -v β€” give more output. May be used multiple times corresponding to the INFO, DEBUG and NOTSET logging levels. The count maxes out at 3.
  • --global β€” perform the action globally for all users πŸ‘‘

πŸ’œ COMMAND 'pipx help' πŸ’œ

usage: pipx help [-h] [--quiet] [--verbose] [--global]

Show help for pipx or a command 🫢 the "bestie I forgot how this works" button

✨ OPTIONS 'pipx help' ✨

  • --quiet, -q β€” give less output. May be used multiple times corresponding to the ERROR and CRITICAL logging levels. The count maxes out at 2.
  • --verbose, -v β€” give more output. May be used multiple times corresponding to the INFO, DEBUG and NOTSET logging levels. The count maxes out at 3.
  • --global β€” perform the action globally for all users πŸ‘‘

🌈 AUTHORS 🌈

pipx(1) was written by Chad Smith and contributors πŸ™Œ The project can be found online at https://pipx.pypa.io β€” go say hi, she's thriving


πŸ‘€ SEE ALSO πŸ‘€

pip(1), virtualenv(1)


and that's a wrap on the whole page bestie, you read all of it and I'm so proud of you πŸ˜­πŸ’– this one was pipx, dated 2026-07-21, from the pipx source. go install something cute, you've earned it. periodt πŸ’…βœ¨

πŸ“¦ where this page comes from