¿Cómo actualizar / actualizar un paquete usando pip?

171

¿Cuál es la forma de actualizar un paquete usando pip? esos no funcionan:

pip update
pip upgrade

Sé que esta es una pregunta simple, pero es necesaria ya que no es tan fácil de encontrar (la documentación de pip no aparece y otras preguntas del desbordamiento de pila son relevantes, pero no son exactamente sobre eso)

borgr
fuente

Respuestas:

280

El camino es

sudo pip install [package_name] --upgrade

o en resumen

sudo pip install [package_name] -U

sudo le pedirá que ingrese su contraseña de root para confirmar la acción.

Si no tiene una contraseña de root (si no es el administrador), probablemente debería trabajar con virtualenv y luego debería descartar sudo:

pip install [package_name] --upgrade
borgr
fuente
2
Como se pip install --helpdijo: -U, --upgrade Upgrade all specified packages to the newest available version.. Entonces debería ser mayúscula -U, no -u.
Peter Liang
25
Por qué una opción tan común no se muestra cuando lo haces pip --helpes un enigma para mí ...
Husky
3
@Husky: Sí, en la misma línea, por qué no solo hacen un upgradecomando que hace lo que ves en respuesta es una buena pregunta. (Es decir, si usa 'actualizar' simplemente hace lo que hace install+ --upgrade). Un 'alias' de algún tipo.
bshea 01 de
10

Para un paquete no específico y una solución más general, puede consultar pip-review , una herramienta que verifica qué paquetes podrían / ​​deberían actualizarse.

$ 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
como si
fuente
3
Si bien esto no responde la pregunta directamente, podría ser lo que algunas personas realmente buscan cuando buscan este mensaje.
borgr
8

tl; dr script para actualizar todos los paquetes instalados

Si solo desea actualizar un paquete, consulte la respuesta de @ borgr . A menudo encuentro necesario, o al menos agradable, actualizar todos mis paquetes a la vez. Actualmente, pip no admite de forma nativa esa acción, pero con scripting sh es bastante simple. Utiliza pip list, awk(o cuty tail), y la sustitución de comandos. Mi frase normal es:

for i in $(pip list -o | awk 'NR > 2 {print $1}'); do sudo pip install -U $i; done

Esto le pedirá la contraseña de root. Si no tiene acceso a eso, la --useropción pipo virtualenv puede ser algo a considerar.

Aiden Woodruff
fuente
7
import subprocess as sbp
import pip
pkgs = eval(str(sbp.run("pip3 list -o --format=json", shell=True,
                         stdout=sbp.PIPE).stdout, encoding='utf-8'))
for pkg in pkgs:
    sbp.run("pip3 install --upgrade " + pkg['name'], shell=True)

Guardar como xx.py
Luego ejecutar Python3 xx.py
Entorno: python3.5 + pip10.0 +

Fofdsf
fuente
Me gusta esta solución He agregado una impresión para mostrar el nombre del paquete durante la actualización:print('updating ', pkg['name'])
pvoj
4

Para actualizar pip para Python3.4 +, debe usar pip3 de la siguiente manera:

sudo pip3 install pip --upgrade

Esto actualizará el pip ubicado en: /usr/local/lib/python3.X/dist-packages

De lo contrario, para actualizar pip para Python2.7, usaría pip de la siguiente manera:

sudo pip install pip --upgrade

Esto actualizará el pip ubicado en: /usr/local/lib/python2.7/dist-packages

Nick D
fuente
77
Esto no es lo que pidió el OP. Pregunta cómo actualizar un paquete específico, no PIP en sí.
Commadelimitado
sin embargo, parece útil tener aquí entre estas otras respuestas
uhoh