Skip to main content

pip-upgrade-all

The pip upgrade-all command 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-deps is 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-a requires websockets<16 but you now have websockets 16). These are usually harmless warnings unless you actually use that code path. Use --skip to 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)

Source distribution for upgrade-all 1.1.0
File Size Uploaded Provenance
upgrade_all-1.1.0.tar.gz 17.5 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for upgrade-all 1.1.0
File Interpreter ABI Platform
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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page