pip-upgrade-all
The
pip upgrade-allcommand pip never shipped.
Upgrades every package installed in the current Python environment to its latest release on PyPI — one package at a time, using pip's own internal machinery.
The pip maintainers decided that environment-wide upgrade management is out of pip's scope. This tool fills that gap.
Install
pip install pip-upgrade-all
Usage
pip-upgrade-all [options]
By default, packages are upgraded one by one without dependency resolution
(--no-deps). This avoids the resolver backtracking and version conflicts
that come with upgrading everything at once. Use --with-deps to opt into
full resolution if you need it.
System-managed packages (those installed by dnf, rpm, apt, etc.) are
automatically detected via their INSTALLER metadata and skipped when
using --user, so they won't get a duplicate copy in your user site-packages.
Options
| Flag | Short | Description |
|---|---|---|
--dry-run |
-n |
Print what would be upgraded without doing anything |
--user |
Only upgrade pip-installed packages, into ~/.local |
|
--skip PKG |
-s PKG |
Skip a package (repeatable) |
--with-deps |
Enable full dependency resolution (slower, may conflict) | |
--index-url URL |
-i URL |
Use a custom package index |
--verbose |
-v |
Show pip's full output |
--version |
Print version and exit |
Examples
# Upgrade everything (no-deps, fast)
pip-upgrade-all
# Only upgrade pip-installed packages, leave system packages alone
pip-upgrade-all --user
# See what would change without touching anything
pip-upgrade-all --dry-run
# Skip specific packages
pip-upgrade-all --skip websockets --skip urllib3
# Full dependency resolution (slower, may backtrack)
pip-upgrade-all --with-deps
# Use a private index
pip-upgrade-all --index-url https://my.artifactory.example/simple/
Caveats
-
--no-depsis the default. This means genuinely new dependencies introduced by an upgraded package won't be installed automatically. If something breaks after upgrading, install the missing dependency manually or re-run with--with-deps. -
Dependency conflicts are ignored by default. Upgrading everything to latest will sometimes leave packages with incompatible version combinations (e.g.
package-arequireswebsockets<16but you now havewebsockets 16). These are usually harmless warnings unless you actually use that code path. Use--skipto pin packages you care about. -
System packages are skipped with
--user. Without--user, a small hardcoded list of known system packages (dnf,apt,pygobject, etc.) is still skipped as a safety net.
Programmatic API
from pip_upgrade_all.__main__ import upgrade_all
exit_code = upgrade_all(user=True, verbose=True)
License
GPL v3
Metadata
Release files for upgrade-all 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| upgrade_all-1.1.0.tar.gz | 17.5 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| upgrade_all-1.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 36.0 kB
Release files / upgrade_all-1.1.0.tar.gz
| Download URL | upgrade_all-1.1.0.tar.gz |
|---|---|
| Size | 17.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6be07b225082e9edfb96a0c7a82d02381cfd731f0ddd7e42cff6cad5f60fc2b9
|
|
BLAKE2b-256 checksum How to use checksums |
3522bad76e8c80379019f4193592de29b252414811a230498973358b9adcf5d1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.4
|
Release files / upgrade_all-1.1.0-py3-none-any.whl
| Download URL | upgrade_all-1.1.0-py3-none-any.whl |
|---|---|
| Size | 18.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
937f3d9be47bdced8ba13eb3046fb2e7b07bfaab1d1b34b7847a23b1a1e167d4
|
|
BLAKE2b-256 checksum How to use checksums |
75037131420f1a9b496676327dfc5891da7da22d5d32e2c1168f13d9f9e6d438
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.4
|
Security for upgrade-all 1.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.