How to upgrade all Python packages with pip
There isn't a built-in flag yet, but you can use
pip list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U
Note: there are infinite potential variations for this. I'm trying to keep this answer short and simple, but please do suggest variations in the comments!
In older version of pip
, you can use this instead:
pip freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U
The grep
is to skip editable ("-e") package definitions, as suggested by @jawache. (Yes, you could replace grep
+cut
with sed
or awk
or perl
or...).
The -n1
flag for xargs
prevents stopping everything if updating one package fails (thanks @andsens).
You can use the following Python code. Unlike pip freeze
, this will not print warnings and FIXME errors.For pip < 10.0.1
import pipfrom subprocess import callpackages = [dist.project_name for dist in pip.get_installed_distributions()]call("pip install --upgrade " + ' '.join(packages), shell=True)
For pip >= 10.0.1
import pkg_resourcesfrom subprocess import callpackages = [dist.project_name for dist in pkg_resources.working_set]call("pip install --upgrade " + ' '.join(packages), shell=True)
To upgrade all local packages; you could use pip-review
:
$ pip install pip-review$ pip-review --local --interactive
pip-review
is a fork of pip-tools
. See pip-tools
issue mentioned by @knedlsepp. pip-review
package works but pip-tools
package no longer works.
pip-review
works on Windows since version 0.5.