¿Cómo actualizo un paquete de Python?

234

Estoy ejecutando Ubuntu 9:10 y está instalado un paquete llamado M2Crypto (la versión es 0.19.1). Necesito descargar, compilar e instalar la última versión del paquete M2Crypto (0.20.2).

El paquete 0.19.1 tiene archivos en varias ubicaciones que incluyen (/ usr / share / pyshared y /usr/lib/pymodules.python2.6).

¿Cómo puedo desinstalar completamente la versión 0.19.1 de mi sistema antes de instalar 0.20.2?

Thompson
fuente

Respuestas:

54

Es posible que desee buscar en un administrador de paquetes de Python como pip . Si no desea utilizar un administrador de paquetes de Python, debería poder descargar M2Crypto y compilar / compilar / instalar sobre la instalación anterior.

Jeremy Whitlock
fuente
1
Gracias. Lo que dijiste funcionó. Construí e instalé 0.20.2 sin necesidad de desinstalar 0.19.1.
Thompson
461

La mejor manera que he encontrado es ejecutar este comando desde la terminal

sudo pip install [package_name] --upgrade

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


Nota: Algunos usuarios pueden tener instalado pip3 en su lugar. En ese caso, use

sudo pip3 install [package_name] --upgrade
princelySid
fuente
44
Y si está utilizando un proxy sin autenticación: sudo pip install [paquete] --upgrade --proxy = address: port
lmsasu
32
Vine aquí por esta respuesta. Lo intenté pip updatey pip upgradeestaba desesperado hasta que vi --upgradeaquí. ¿Por qué no agregan un pip upgradecomando?
Lars Blumberg
99
Esta es de hecho una característica bien oculta.
otocan
1
Para usuarios de Windows: sudono es obligatorio.
Stevoisiak
2
Esta debería ser la respuesta # 1
Cord Kaldemeyer
48

Para actualizar automáticamente todos los paquetes obsoletos (que se instalaron usando pip), simplemente ejecute el script a continuación,

pip install $(pip list --outdated | awk '{ print $1 }') --upgrade

Aquí, pip list --outdatedenumeraremos todos los paquetes anticuados y luego los canalizaremos a awk, por lo que imprimirá solo los nombres. Luego, $(...)lo convertirá en una variable y luego, todo se hará automáticamente. Asegúrate de tener los permisos. (Solo ponga sudoantes de pip si está confundido) Escribiría un script llamado, pip-upgrade El código está abajo,

#!/bin/bash
sudo pip install $(pip list --outdated | awk '{ print $1 }') --upgrade

Luego use las siguientes líneas de script para prepararlo:

sudo chmod +x pip-upgrade
sudo cp pip-upgrade /usr/bin/

Entonces, ¡solo golpea pip-upgradey listo!

Fahim Ferdous
fuente
Recibí un error de sintaxis que apunta al último paréntesis en:awk: cmd. line:1: { print $1 })
TT--
77
@TT Las nuevas versiones de piprequerir el uso de la --format=legacyopción, es decir, pip list --outdated --format=legacy. También para todos: actualizar a ciegas todos los módulos a través de pip puede ser bastante peligroso en muchas distribuciones de Linux. Muchos de ellos proporcionan módulos de Python específicos a través de paquetes de distribución y algunas de esas distribuciones (RHEL en particular) pueden romperse si actualiza una mierda ... sin mencionar el hecho de que si actualiza a través de pip, los paquetes de distribución podrían revertir sus cambios en Una futura actualización.
rsaw
gracias @rsaw. Tiene razón, debe ejecutar sus comandos pip con la opción --user
Fahim Ferdous
1
Me gusta esta respuesta, aunque entiendo el peligro de actualizar todo automáticamente. De todos modos, dado que el legado está en desuso en pip 19.0 pip install $ (pip list --outdated --format = columnas | grep -v "Package" | grep -v - ---- | awk '{print $ 1}') -
Mike v
2
Para trabajar en un Ubuntu 18.04 venv, adapte de la siguiente manera:pip install $(pip list --outdated | tail +3 | grep -v sdist | awk '{ print $1 }') --upgrade
Alexander Remesch
34
  1. A través del símbolo del sistema de Windows, ejecute: pip list --outdated obtendrá la lista de paquetes obsoletos.
  2. Ejecutar: pip install [package] --upgrade actualizará [package]y desinstalará la versión anterior.

Para actualizar pip:

py -m pip install --upgrade pip

Nuevamente, esto desinstalará la versión anterior de pip e instalará la última versión de pip.

Hossain Mahmood Tuhin
fuente
29
  • Método 1: Actualice manualmente uno por uno

pip install package_name -U
  • Método 2: Actualice todo a la vez (alta probabilidad de reversión si algún paquete no se actualiza

pip install $(pip list --outdated --format=columns |tail -n +3|cut -d" " -f1) --upgrade
  • Método 3: Actualice uno por uno usando el bucle

for i in  $(pip list --outdated --format=columns |tail -n +3|cut -d" " -f1); do pip install $i --upgrade; done
Donghua Luo
fuente
11

Creo que la mejor frase es:

pip install --upgrade <package>==<version>
Stuart Mclean
fuente
9

Utilice pipupgrade !

$ pip install pipupgrade
$ pipupgrade --latest --interactive

¡pipupgrade lo ayuda a actualizar su sistema, local o paquetes desde un requirements.txtarchivo! También actualiza selectivamente paquetes que no rompen el cambio. Compatible con Python2.7 +, Python3.4 + y pip9 +, pip10 +, pip18 +.

ingrese la descripción de la imagen aquí

NOTA: Soy el autor de la herramienta.

Achilles Gasper Rasquinha
fuente
1
Cada vez que uso esta herramienta obtengo la respuesta "[0; 93mChecking ... [0m" y no procede a hacer nada. ¿Lo estoy usando incorrectamente?
Violatic
Yo uso una Mac con MacPorts. Con Python 3.7 pipupgrade solo funcionó para 5 de 50 paquetes, para el resto tuve que usar esto: para i in pip3.7 list --outdated | sed -n -e '3,$s/ .*//p'; hacer pip3.7 install --upgrade $ i; hecho
Michael Dreher
4

¿Cómo se instaló originalmente el paquete? Si fue a través de apt, simplemente podría hacerapt-get remove python-m2crypto

Si lo instaló a través de easy_install, estoy bastante seguro de que la única forma es simplemente desechar los archivos en lib, shared, etc.

Mi recomendación en el futuro? Use algo como pip para instalar sus paquetes. Además, puede buscar algo llamado virtualenv para que sus paquetes se almacenen por entorno, en lugar de únicamente en la raíz.

Con pip, es bastante fácil:

pip install m2crypto

Pero también puede instalar desde repositorios git, svn, etc. con la dirección correcta. Todo esto se explica en la documentación de pip

Bartek
fuente
La forma en que describe dónde están instalados los archivos indica que el paquete se instaló usando el administrador de paquetes apt, porque (en Debian AFAIK) apt instalaría paquetes python en las 2 ubicaciones que enumeró: / share / pyshared / .. es para código compartido a través de versiones y / usr / lib / .. para partes específicas de la versión. easy-install / pip, por otro lado, usaría / usr / local / lib / .., como dijiste, solo apt-get remove lo habría hecho.
Basilea Shishani
3

En el cuaderno Juptyer, una forma muy simple es

!pip install <package_name> --upgrade

Entonces, solo necesita reemplazarlo con el nombre real del paquete.

Joe Zeng
fuente
2

Obtenga todos los paquetes desactualizados y cree un archivo por lotes con los siguientes comandos pip install xxx --upgrade para cada paquete desactualizado

Leslie Lespes
fuente