2011-03-03 23 views
118

Estoy ejecutando Ubuntu 9:10 y está instalado un paquete llamado M2Crypto (la versión es 0.19.1). Necesito descargar, construir e instalar la última versión del paquete M2Crypto (0.20.2).¿Cómo actualizo un paquete de Python?

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

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

Respuesta

30

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

+0

Gracias. Lo que dijiste funcionó. Construí e instalé 0.20.2 sin necesidad de desinstalar 0.19.1. – thompson

4

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

Si lo instaló a través de easy_install, estoy bastante seguro de que el único camino es simplemente basura los archivos bajo lib, compartida, 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 ambiente, en lugar de únicamente en la raíz.

con la pipa, que es bastante fácil:

pip install m2crypto 

Pero también se puede instalar desde Git, SVN, etc pases con la dirección correcta. Todo esto se explica en el pip documentation

+0

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 los paquetes de python en las 2 ubicaciones que listó -/share/pyshared/.. es para compartir código entre versiones y/usr/lib/.. para partes específicas de la versión. easy-install/pip por otro lado usaría/usr/local/lib/.. - así como dijiste - solo apt-get eliminar lo hubiera hecho. –

265

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

sudo pip install [package_name] --upgrade 

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

+2

Y si está utilizando un proxy sin autenticación: sudo pip install [paquete] --upgrade --proxy = dirección: puerto – lmsasu

+10

Vine aquí por esta respuesta. Intenté 'pip update' y' pip upgrade' y estaba desesperado hasta que vi '--upgrade' aquí. ¿Por qué no agregan un comando 'pip upgrade'? –

+3

Esta es de hecho una característica bien escondida. – otocan

15
  1. a través de Windows el intérprete de comandos, ejecute: pip list --outdated obtendrá la lista de los paquetes obsoletos.
  2. Ejecutar: pip install [package] --upgrade Actualiza el [package] y desinstala la versión anterior.
27

Para actualizar automáticamente todos los paquetes obsoletos (que fueron instalados usando PIP), basta con ejecutar el fuelle guión,

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

Aquí, pip list --outdated lista todos los paquetes de fecha toda la fuera y luego nos tubería a awk, entonces solo imprimirá los nombres. Luego, el $(...) lo convertirá en una variable y luego, todo se hace automáticamente. Asegúrate de tener los permisos.(Sólo hay que poner sudo antes pip si usted está confundido) que iba a escribir un guión llamado, pip-upgrade El código es abajo,

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

A continuación, utilice las siguientes líneas de escritura para prepararlo:

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

Luego, solo toque pip-upgrade y listo!

+0

Tengo un error de sintaxis que apunta al último corchete en: 'awk: cmd. línea: 1: {print $ 1}) ' –

+2

@TT Las versiones más recientes de' pip' requieren que use la opción '--format = legacy', es decir,' pip list --outdated --format = legacy'. También digo para todos: actualizar ciegamente 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 mucho si actualizas una mierda ... sin mencionar el hecho de que si actualizas a través de pip, los paquetes de distribución pueden revertir tus cambios en una futura actualización. – rsaw

2

obtener todos los paquetes obsoletos y crear un archivo por lotes con los comandos siguientes PIP instala XXX --upgrade para cada paquetes obsoletos

4

Creo que lo mejor de una sola línea es:

pip install --upgrade <package>==<version> 
2

método 1: Actualizar manualmente una por una

PIP instalar package_name -U

método 2: U pgrade todo a la vez (alta probabilidad de reversión si algún paquete no se actualiza

instalación de pip $ (lista de pip --outdated --format = columnas | tail -n +3 | cut -d "" -f1) --upgrade

Método 3: Actualizar uno por uno usando bucle

for i in $ (lista pip --outdated --format = columnas | cola -n 3 | cortar -d"" -f1); do pip install $ i --upgrade; hecho

Cuestiones relacionadas