pip-check
pip-check gives you a quick overview of all installed packages and their
update status. Under the hood it calls pip list --outdated --format=json
and transforms it into a more user-friendly table.
pip-check also supports uv, or pip at any location. Pass the pip
command using --cmd:
pip-check -c pip3
pip-check -c ".venv/bin/pip"
pip-check -c "uv pip"
Installation:
pip install pip-check
Or Install the last version that runs on Python 2.7 or 3.4:
pip install pip-check==2.5.2
Usage:
$ pip-check -h
usage: pip-check [options] [-- PIP_ARGS ...]
A quick overview of all installed packages and their update status. Supports `pip` or `uv pip`.
options:
-h, --help show this help message and exit
-a, --ascii Display as ASCII Table
-c, --cmd PIP_CMD The [uv] pip executable to run. E.g.: `/path/to/pip` or `uv pip`. Default: `pip`
-l, --local Show only virtualenv installed packages. (pip only)
-r, --not-required List only packages that are not dependencies of installed packages. (pip only)
-f, --full-version Show full version strings.
-H, --hide-unchanged Do not show "unchanged" packages.
-u, --show-update Show update instructions for updatable packages. (pip only)
-U, --user Show only user installed packages. (pip only)
--version Show the version of pip-check and exit.
Arguments after `--` are passed to `pip list` as they are, e.g. `pip-check -- --pre` to include pre-releases, or `pip-check -- --extra-index-url URL` to also check another index. With uv, use uv's
options, e.g. `-- --index URL`. They are also added to the --show-update command.
Pre-releases and other package indexes:
Everything after -- is passed to pip list unchanged, so pip-check can use
any of pip's options:
pip-check -- --pre # include pre-releases
pip-check -- --extra-index-url https://my.index/simple # also check another index
pip-check -- --index-url https://mirror.example/simple # check a mirror instead of PyPI
pip-check -c "uv pip" -- --index https://my.index/simple # uv uses its own option names
The same arguments are added to the upgrade command that --show-update
prints, so e.g. a listed pre-release actually gets installed. uv's pip list
has no pre-release option, so --pre only works with pip.
pip's own configuration applies as well, so a pip.conf or environment
variables such as PIP_PRE=1 or PIP_EXTRA_INDEX_URL work without --.
Local Development
pip-check uses uv for local development.
uv sync # Create a .venv and install dependencies
uv build # Build distribution packages
Releasing:
Releases are published to PyPI by GitHub Actions. Bump version in
pyproject.toml, add the CHANGELOG entry, then push a matching tag:
$ git tag v3.3 && git push origin v3.3
The Publish workflow checks that the tag matches the project version, runs the full test suite and uploads the package using PyPI Trusted Publishing.
Testing:
Test against a variation of Python versions:
$ uv run nox
Recommended Similar Tools
- pip-date - Show the installation or modification times of all your pip packages
- pip-chill - Lists only the dependencies (or not) of installed packages
Changelog
v3.3 (2026-10-22):
- Pass extra arguments to
pip listafter--, e.g.pip-check -- --preto include pre-releases (#28) orpip-check -- --extra-index-url URLto also check another index (#30). They're added to the--show-updateupgrade command too. - Report a failing pip command with pip's error message and exit code 1. Previously it showed up as "No outdated packages".
- A
--cmdthat can't be run (e.g. a typo) now prints an error instead of a traceback. - Ctrl-C now exits quietly with code 130 instead of printing a traceback.
- Require
packaging>=20.0. Older versions lackVersion.majorand made pip-check crash. - The sdist can be built with pip older than 19.3 (the pip that came with Python 3.8), which couldn't parse
pyproject.toml. - Test against Python 3.15. Python 3.8 and later remain supported.
- Use an SPDX license expression (PEP 639) and add project keywords, topics and a changelog link.
- Limit the sdist to source, docs and tests. It previously included local files such as
.coverageanduv.lock. - Releases are published from GitHub Actions using PyPI Trusted Publishing.
v3.2 (2025-08-27): v3.2.1 (2025-08-27):
- Fix 'uv' support to work with latest UV version.
v3.1 (2025-04-14):
- Adopted uv and hatchling as the primary build tools.
- Implemented nox as the test runner.
- Migrated all documentation from reStructuredText to Markdown for improved readability and accessibility.
- Introduced Ruff as a linter and optimized code to align with the current set of Ruff rules.
- Added type annotations throughout the codebase.
- Test against Python 3.14.
v3.0 (2025-04-11):
- Added support for
uv. Use--cmd="uv pip"to utilize uv.
v2.10 (2025-04-11):
- Resolve the issue of missing line breaks when no packages are found.
- Test against Python 3.13.
v2.9 (2024-09-01):
- Show current Python and pip version upon load.
- Test against Python 3.12.
v2.8.1 (2022-11-06):
- Fixes issue with packages not correctly sorted into "Major" category.
v2.8 (2022-11-06):
- Added support for Python 3.11.
- Replaced deprecated "distutils" with "packaging" module.
v2.7 (2021-11-16):
- Drop support for Python 2.7, 3.4 and 3.5
- Added support for Python 3.9 and 3.10.
- Removed 'colorclass' as a dependency and with that the shell argument
--disable-colors.
v2.6 (2019-12-12):
- Requires Python 3.5 or higher.
- Command error is shown if pip exits with a status code 1 (or larger).
- Error message is shown if pip is not able to load packages in case of network problems.
- Update instructions will now add
--userin case the pip-check command should only show user packages as well.
v2.5.2 (2019-08-08):
- This is the last version that runs on Python 2.7. Install it with
pip install pip-check==2.5.2 - Windows color fixes.
v2.5.1 (2019-08-08):
- Windows script fixes.
v2.5 (2019-08-08):
- A more robust installation that installs pip-check as a proper console script.
- Added new
--disable-colorsargument. - Added tests for Python 3.7 and 3.8.
- Fixed Syntax warning happening with no outdated packages.
- Cleanup of the entire codebase.
v2.4 (2019-07-23):
- Added support to only show packages from the
userorlocalpackage namespace.
v2.3.3 (2018-02-19):
- Visual fixes around
--show-update
v2.3.2 (2018-02-18):
- New
--show-updateargument. - Fixed
--full-versionsargument. - Minor UI improvements.
v2.1 (2018-02-18):
- Complete new architecture. It now calls
pipdirectly and parses it output which should be more reliable. - It's also using distutils for the version comparision now, which is more reliable as well.
- Lots of features and bug fixes.
v0.2 (2016-02-09):
- Fixes issues with older pip versions.
- Truncates extremly long version numbers.
v0.1 (2016-02-06):
- Very first version, and yet with very limited features.
Metadata
Release files for pip-check 3.3
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 | |
|---|---|---|---|---|
| pip_check-3.3.tar.gz | 15.4 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pip_check-3.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 27.8 kB
Release files / pip_check-3.3.tar.gz
| Download URL | pip_check-3.3.tar.gz |
|---|---|
| Size | 15.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b3e157835fd3e917995c7801764d4f132c5c0965c41f3b065320c12df4fc151b
|
|
BLAKE2b-256 checksum How to use checksums |
4e8aed82be935a4f11f4a5b6fc40530af4ad5d21890c26a024f5d235c184b20a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.
Transparency logRelease files / pip_check-3.3-py3-none-any.whl
| Download URL | pip_check-3.3-py3-none-any.whl |
|---|---|
| Size | 12.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
335bcdc6766de8516701080481061c7782fad804406cf259aeba091211abb7cb
|
|
BLAKE2b-256 checksum How to use checksums |
d2ac9644c723e26123cd619126a2fc9ce336ce1add61432c1a1a5e790440e289
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.
Transparency logSecurity for pip-check 3.3
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.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for pip_check-3.3.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.
Transparency logA 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.