¿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)

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

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

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.


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 +


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


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.