Skip to content

Latest commit

 

History

History
221 lines (163 loc) · 7.38 KB

README.md

File metadata and controls

221 lines (163 loc) · 7.38 KB

pip-manage

pre-commit.ci status pylint status tests status CodeQL PyPI - Version Python versions Licens semantic-release PyPI - Format Ruff Style: black Imports: isort

pip-manage lets you smoothly manage your installed packages.

Installation

To install, simply use pip:

pip install pip-manage

Alternatively:

pip install git+https://github.com/realshouzy/pip-manage

Decide for yourself whether you want to install the tool system-wide, or inside a virtual env. Both are supported.

Documentation

pip-manage includes two tools pip-review and pip-purge.

pip-review

pip-review is a convenience wrapper around pip. It can list available updates by deferring to pip list --outdated. It can also automatically or interactively install available updates for you by deferring to pip install.

Example, report-only:

$ pip-review
requests==0.13.4 is available (you have 0.13.2)
redis==2.4.13 is available (you have 2.4.9)
rq==0.3.2 is available (you have 0.3.0)

You can also print raw lines:

$ pip-review --raw
requests==0.13.4
redis==2.4.13
rq==0.3.2

Example, actually install everything:

$ pip-review --auto
... <pip install output>

Example, run interactively, ask to upgrade for each package:

$ pip-review --interactive
requests==0.14.0 is available (you have 0.13.2)
Upgrade now? [Y]es, [N]o, [A]ll, [Q]uit y
...
redis==2.6.2 is available (you have 2.4.9)
Upgrade now? [Y]es, [N]o, [A]ll, [Q]uit n
rq==0.3.2 is available (you have 0.3.0)
Upgrade now? [Y]es, [N]o, [A]ll, [Q]uit y
...

Example, preview for update target list by pip list --outdated format, with run interactively or install everything:

$ pip-review --interactive --preview
Package  Version Latest Type
-----------------------------
redis    2.4.9   2.6.2  wheel
requests 0.13.2  0.14.0 wheel
rq       0.3.0   0.3.4  wheel
-----------------------------
... < --interactive processing >

You can also freeze the packages that will be upgraded to a file before actually upgrading them.

$ pip-review --auto --freeze-outdated-packages
... <pip install output>

By default it will safe them to backup.txt in the current directory, but you can specify the file path using the --freeze-file option.

Run pip-review -h for a complete overview of the options.

Note: If you want to pin specific packages to prevent them from automatically being upgraded, you can use a constraint file (similar to requirements.txt):

$ export PIP_CONSTRAINT="${HOME}/constraints.txt"
$ cat $PIP_CONSTRAINT
pyarrow==0.14.1
pandas<0.24.0

$ pip-review --auto
...

Set this variable in .bashrc or .zshenv to make it persistent.

  • Linux:
$ cat ~/.config/pip/pip.conf
[global]
constraint = /home/username/constraints.txt
  • Windows:
$ cat $HOME\AppData\Roaming\pip\pip.ini
[global]
constraint = '$HOME\Roaming\pip\constraints.txt'

The conf file are dependent of the user, so If you use multiple users you must define config file for each of them. https://pip.pypa.io/en/stable/user_guide/#constraints-files

Alternatively, since arguments that are also options for pip install or pip list --outdated will be forwarded, you can pass the constraint files directly as an argument using the --constraint option of pip install.

Like pip, pip-review updates all upgradeable packages, including pip and pip-manage.

pip-purge

pip-purge enables you to uninstall a package along with all its dependencies that are not required by any other packages. Simply specify the packages you want to purge, and pip-purge will handle the dependency resolution for you, ensuring that no other packages are broken in the process. It uses the importlib.metadata module to resolve the dependencies and then deferres to pip uninstall.

Example:

$ pip-purge requests
The following packages will be uninstalled: certifi, charset-normalizer, idna, requests, urllib3
Running: ...

You can also read from a requirements file. The read packages will be purged:

$ pip-purge --requirement requirements.txt
...

If you want to exclude certain packages, you can do that as follows:

$ pip-purge requests --exclude urllib3
The following packages will be uninstalled: certifi, charset-normalizer, idna, requests
Running: ...

Sometimes packages have extra / optional dependencies. These are considered by default, but can be ignored:

$ pip-purge requests --ignore-extra
...

It's recommended to do a dry run first, which performs all operations normally but doesn't defer to pip uninstall:

$ pip-purge requests --dry-run
The following packages will be uninstalled: certifi, charset-normalizer, idna, requests, urllib3
Would run: ...

You can also freeze the packages that will be uninstalled to a file before actually purging them.

$ pip-review requests --freeze-purged-packages
...

By default it will safe them to backup.txt in the current directory, but you can specify the file path using the --freeze-file option.

Run pip-purge -h for a complete overview of the options.

Contributing

If you are interested in contributing to this project, please refer here for more information.

Origins and credit

pip-review is derived from the original project of the same name created by Julian Gonggrijp. This fork is a refactored and enhanced version of the original.

Included from the original project: pip-review was originally part of pip-tools but has been discontinued as such. See Pin Your Packages by Vincent Driessen for the original introduction. Since there are still use cases, the tool now lives on as a separate package.