Skip to main content

Upgrade every installed package to the latest PyPI release — the 'pip upgrade-all' command pip never shipped.

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

upgrade_all-1.1.0.tar.gz (17.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

upgrade_all-1.1.0-py3-none-any.whl (18.5 kB view details)

Uploaded Python 3

File details

Details for the file upgrade_all-1.1.0.tar.gz.

File metadata

  • Download URL: upgrade_all-1.1.0.tar.gz
  • Upload date:
  • Size: 17.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for upgrade_all-1.1.0.tar.gz
Algorithm Hash digest
SHA256 6be07b225082e9edfb96a0c7a82d02381cfd731f0ddd7e42cff6cad5f60fc2b9
MD5 b39bc4754ad6fb3dd085b4c0eabc15bc
BLAKE2b-256 3522bad76e8c80379019f4193592de29b252414811a230498973358b9adcf5d1

See more details on using hashes here.

File details

Details for the file upgrade_all-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: upgrade_all-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 18.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for upgrade_all-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 937f3d9be47bdced8ba13eb3046fb2e7b07bfaab1d1b34b7847a23b1a1e167d4
MD5 5c8f72fc3e9325a7b195f9ff2fc35210
BLAKE2b-256 75037131420f1a9b496676327dfc5891da7da22d5d32e2c1168f13d9f9e6d438

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page