You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
reinstall-all, upgrade-all and install-all work on several environments at once; --verbose keeps them sequential. (#2137)
Ctrl-C during upgrade-all lets running upgrades finish; a second Ctrl-C stops them, and the next upgrade, upgrade-all or reinstall repairs any environment left half-upgraded. (#2144)
Python 3.15 starts pipx with lazy imports; set PYTHON_LAZY_IMPORTS=normal to turn them off. (#2129, #2132)
uv-backend installs retry on a Python that satisfies requires-python, as pip-backend installs already did. (#2144)
install-all --backend translates recorded index options between pip and uv, and refuses an environment whose index it cannot carry over. (#2144)
Changed
upgrade and reinstall-all refresh shared pip only once it is 30 days old; run pipx upgrade-shared to refresh it sooner. (#2116)
--suffix now goes after the app name (pip3.12@1, not pip3@1.12), except before a Windows file extension. Apps exposed by 1.17.14 keep their old name until pipx next exposes them. (#2098)
PIPX_MAX_LOGS keeps that many logs, not one extra. (#2103)
uninject removes orphaned dependencies in one call and reports them on one line. (#2126)
The pipx console script now points at pipx.__main__:cli. (#2132)
SIGTERM and SIGHUP stop pip, uv and build processes and restore an interrupted reinstall, and Ctrl-C reports one line per environment instead of a traceback. (#2144)
pipx masks passwords in index and package URLs in its output and log files. (#2144)
pipx shows output that is not valid UTF-8 with replacement characters instead of crashing. (#2144)
upgrade-all and list --outdated report an environment whose Python is missing instead of crashing. (#2141)
upgrade removes apps, man pages and completions the new version no longer ships, and expose relinks missing ones. (#2097, #2099)
install-all restores recorded venv and pip args and rejects malformed spec files. (#2096)
Pins of injected packages survive reinstall, install-all and --force. (#2095)
install --force --python keeps the requested interpreter. (#2098)
interpreter upgrade moves environments off a patch-pinned standalone Python. (#2094)
Scripts run on the default Python when it satisfies their requires-python. (#2093)
An auto-detected uv older than 0.9.17 falls back to pip with a warning. (#2092)
inject and upgrade-all warn that --system-site-packages is ignored. (#2089)
--output json prints only the JSON envelope on stdout. (#2101)
A global pipx keeps other users on their own paths, and an unwritable home gets a one-line error. (#2102)
The last output of a child process is no longer lost on macOS. (#2111)