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.0.0.tar.gz (16.6 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.0.0-py3-none-any.whl (17.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: upgrade_all-1.0.0.tar.gz
  • Upload date:
  • Size: 16.6 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.0.0.tar.gz
Algorithm Hash digest
SHA256 53255b97922f1089443393d307d68da0776797fb5f814e45bc2999021ca30638
MD5 f9b5b2a4b3654f311d5f5f4e9dda539f
BLAKE2b-256 2ff0f4ba9a61dcf6c8f4971da4c96913463cd705b0641b7e1db110463019559c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: upgrade_all-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 17.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.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c0e3144c162919492f6df54986e9a3e9163f5b700458215ef9687c90fe491846
MD5 4091e07c392194b25fd409f7bda537da
BLAKE2b-256 6ecdbfa1e3344c63fb597c40f0f07907ec0c4492d4ecf51effefc7f2aa88d410

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