Come posso aggiornare un pacchetto Python?


234

Sto eseguendo Ubuntu 9:10 e viene installato un pacchetto chiamato M2Crypto (la versione è 0.19.1). Devo scaricare, compilare e installare l'ultima versione del pacchetto M2Crypto (0.20.2).

Il pacchetto 0.19.1 contiene file in diverse posizioni tra cui (/ usr / share / pyshared e /usr/lib/pymodules.python2.6).

Come posso disinstallare completamente la versione 0.19.1 dal mio sistema prima di installare 0.20.2?

Risposte:


54

Potresti voler esaminare un gestore di pacchetti Python come pip . Se non vuoi usare un gestore di pacchetti Python, dovresti essere in grado di scaricare M2Crypto e compilare / compilare / installare sulla vecchia installazione.


1
Grazie. Quello che hai detto ha funzionato. Ho costruito e installato 0.20.2 senza dover disinstallare 0.19.1.
Thompson

461

Il modo migliore che ho trovato è di eseguire questo comando dal terminale

sudo pip install [package_name] --upgrade

sudo chiederà di inserire la password di root per confermare l'azione.


Nota: alcuni utenti potrebbero avere installato pip3. In tal caso, utilizzare

sudo pip3 install [package_name] --upgrade

4
E se si utilizza un proxy senza autenticazione: sudo pip install [pacchetto] --upgrade --proxy = indirizzo: porta
lmsasu

32
Sono venuto qui per questa risposta. Ci ho provato pip updateed pip upgradeero disperato fino a quando non ho visto --upgradequi. Perché non aggiungono un pip upgradecomando?
Lars Blumberg,

9
Questa è davvero una caratteristica ben nascosta.
otocan,

1
Per utenti Windows: sudonon è richiesto.
Stevoisiak,

2
Questa dovrebbe essere la risposta n. 1
Cord Kaldemeyer,

48

Per aggiornare automaticamente tutti i pacchetti obsoleti (che sono stati installati utilizzando pip), basta eseguire lo script qui sotto,

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

Qui, pip list --outdatedelencheremo tutti i pacchetti obsoleti e poi lo inoltreremo a awk, quindi stamperà solo i nomi. Quindi, la $(...)renderà una variabile e poi, tutto sarà fatto automaticamente in modo automatico. Assicurati di disporre delle autorizzazioni. ( sudoMetti prima di pip se sei confuso) Scriverei uno script chiamato, pip-upgrade Il codice è sotto,

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

Quindi utilizzare le seguenti righe di script per prepararlo:

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

Quindi, basta colpire pip-upgradee voilà!


ho awk: cmd. line:1: { print $1 })
riscontrato

7
@TT Le versioni più recenti di piprichiedono l'uso --format=legacydell'opzione, ad es pip list --outdated --format=legacy. Cordiali saluti anche a tutti: l'aggiornamento cieco di tutti i moduli tramite pip può essere abbastanza pericoloso su molte distribuzioni Linux. Molti di essi forniscono specifici moduli Python tramite pacchetti distro e alcune di queste distro (in particolare RHEL) possono rompersi duramente se si aggiorna merda ... per non parlare del fatto che se si aggiorna tramite pip, i pacchetti distro potrebbero ripristinare le modifiche su un futuro aggiornamento.
rsaw

grazie @rsaw. Ha ragione, dovresti eseguire i tuoi comandi pip con l'opzione --user
Fahim Ferdous

1
Mi piace questa risposta, anche se capisco il pericolo nell'aggiornamento automatico di tutto. Comunque, poiché l'eredità è deprecata in pip 19.0 pip installa $ (elenco pip - obsoleto --format = colonne | grep -v "Pacchetto" | grep -v - ---- | awk '{print $ 1}') - -upgrade
mike v

2
Per lavorare su un Ubvv 18.04 venv adattarsi come segue:pip install $(pip list --outdated | tail +3 | grep -v sdist | awk '{ print $1 }') --upgrade
Alexander Remesch,

34
  1. Tramite il prompt dei comandi di Windows, esegui: pip list --outdated otterrai l'elenco dei pacchetti obsoleti.
  2. Esegui: pip install [package] --upgrade aggiornerà [package]e disinstallerà la versione precedente.

Per aggiornare pip:

py -m pip install --upgrade pip

Ancora una volta, questo disinstallerà la versione precedente di pip e installerà l'ultima versione di pip.


29
  • Metodo 1: aggiornare manualmente uno per uno

pip install package_name -U
  • Metodo 2: aggiorna tutto in una volta (rollback ad alta probabilità se alcuni pacchetti non riescono ad aggiornarsi

pip install $(pip list --outdated --format=columns |tail -n +3|cut -d" " -f1) --upgrade
  • Metodo 3: aggiornare uno per uno utilizzando il ciclo

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

11

Penso che il miglior one-liner sia:

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

9

Usa pipupgrade !

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

pipupgrade ti aiuta ad aggiornare il tuo sistema, locale o pacchetti da un requirements.txtfile! Aggiorna anche selettivamente i pacchetti che non interrompono il cambiamento. Compatibile con Python2.7 +, Python3.4 + e pip9 +, pip10 +, pip18 +.

inserisci qui la descrizione dell'immagine

NOTA: sono l'autore dello strumento.


1
Ogni volta che utilizzo questo strumento ottengo la risposta "[0; 93mControllo ... [0m" e non procede. Lo sto usando in modo errato?
Violatic

Uso un Mac con MacPorts. Con Python 3.7 pipupgrade ha funzionato solo per 5 pacchetti su 50, per il resto ho dovuto usare questo: for i in pip3.7 list --outdated | sed -n -e '3,$s/ .*//p'; installare pip3.7 --upgrade $ i; fatto
Michael Dreher il

4

Come è stato originariamente installato il pacchetto? Se fosse tramite apt, potresti semplicemente essere in grado di farloapt-get remove python-m2crypto

Se lo hai installato tramite easy_install, sono abbastanza sicuro che l'unico modo sia di eliminare i file in lib, condivisi, ecc.

La mia raccomandazione in futuro? Usa qualcosa come pip per installare i tuoi pacchetti. Inoltre, potresti cercare qualcosa chiamato virtualenv in modo che i tuoi pacchetti siano archiviati in base all'ambiente, piuttosto che esclusivamente su root.

Con pip è abbastanza semplice:

pip install m2crypto

Ma puoi anche installare da repository git, svn, ecc con l'indirizzo giusto. Questo è tutto spiegato nella documentazione del pip


Il modo in cui descrive dove sono installati i file indica che il pacchetto è stato installato usando il gestore pacchetti apt - perché (su Debian AFAIK) apt installa i pacchetti python nelle 2 posizioni che ha elencato - / share / pyshared / .. è per il codice condiviso tra versioni e / usr / lib / .. per parti specifiche della versione. easy-install / pip d'altra parte userebbe / usr / local / lib / .. - così come hai detto - solo apt-get remove lo avrebbe fatto.
Basilea Shishani,


3

Nel taccuino Juptyer, un modo molto semplice è

!pip install <package_name> --upgrade

Quindi, devi solo sostituire con il nome del pacchetto effettivo.


2

Ottieni tutti i pacchetti obsoleti e crea un file batch con i seguenti comandi pip install xxx --upgrade per ogni pacchetto obsoleto

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.