Solución:
Todavía no hay una bandera incorporada, pero puede usar
pip list --outdated --format=freeze | grep -v '^-e' | cut -d = -f 1 | xargs -n1 pip install -U
Nota: existen infinitas variaciones potenciales para esto. Estoy tratando de que esta respuesta sea breve y simple, ¡pero sugiera variaciones en los comentarios!
En la versión anterior de pip
, puedes usar esto en su lugar:
pip freeze --local | grep -v '^-e' | cut -d = -f 1 | xargs -n1 pip install -U
los grep
es omitir las definiciones de paquetes editables (“-e”), como sugiere @jawache. (Sí, podrías reemplazar grep
+cut
con sed
o awk
o perl
o…).
los -n1
bandera para xargs
evita detener todo si falla la actualización de un paquete (gracias @andsens).
Puede utilizar el siguiente código de Python. diferente a pip freeze
, esto no imprimirá advertencias ni errores FIXME.
Para pip <10.0.1
import pip
from subprocess import call
packages = [dist.project_name for dist in pip.get_installed_distributions()]
call("pip install --upgrade " + ' '.join(packages), shell=True)
Para pip> = 10.0.1
import pkg_resources
from subprocess import call
packages = [dist.project_name for dist in pkg_resources.working_set]
call("pip install --upgrade " + ' '.join(packages), shell=True)
Para actualizar todos los paquetes locales; podrías usar pip-review
:
$ pip install pip-review
$ pip-review --local --interactive
pip-review
es una bifurcación de pip-tools
. Ver pip-tools
problema mencionado por @knedlsepp. pip-review
el paquete funciona pero pip-tools
el paquete ya no funciona.
pip-review
funciona en Windows desde la versión 0.5.