Ripristina l'installazione di Python sul valore predefinito più le dipendenze del pacchetto apt


14

Ho giocato molto con le mie installazioni di Python (2 e 3) e ho installato un sacco di pacchetti, alcuni usando apt-get, ma molti usando pip. Ho anche aggiornato molti aptpacchetti installati con pipuna versione più recente.

La mia domanda è:
come posso annullare tutte queste modifiche, rimuovere tutti i pippacchetti Python installati e mantenere il set predefinito di pacchetti preinstallati nella loro versione del repository predefinito, oltre a quelli installati apt-getma solo come dipendenza da altri software, eseguendo sempre il downgrade al repository versione se necessario.

Voglio fare questo per avere un ambiente Python riordinato per il sistema e avere le mie modifiche solo in virtualenvs.

È possibile senza una reinstallazione del sistema? Come lo approccerei?


Risposte:


5

Vorrei iniziare elencando i pacchetti Python gestiti da apt-get(il seguente one-liner richiede alcuni secondi per essere eseguito, sii paziente):

$ for pyfile in `ls /usr/lib/python2.7/dist-packages`; do dpkg -S "/usr/lib/python2.7/dist-packages/${pyfile}" | sed 's/:.*//g'; done | sort -u

Nota: se necessario, sostituire 2.7 con qualsiasi versione di Python che ti interessa.

Quindi, disinstallare i pacchetti installati manualmente. Se non si è sicuri di quali siano quelli installati, è possibile ottenere l'elenco di tutti i pacchetti installati manualmente utilizzando il comando seguente (vedere questa domanda ):

$ comm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u)

Quindi disinstallare i pacchetti Python installati manualmente, ad esempio:

$ sudo apt-get remove python-tk python-scipy

Quindi, vuoi sapere quali pacchetti hai installato usando pip:

$ ls -ltd /usr/local/lib/python2.7/dist-packages/*

Questo comando elenca il contenuto della directory di installazione di pip ordinata per data dell'ultima modifica, facilitando la ricerca dei pacchetti installati dall'utente. Ad esempio, ho installato lo gcloudstrumento di Google che installa un sacco di pacchetti pip che non voglio disinstallare, ma guardando l'elenco è facile vedere che sono stati installati tutti nello stesso momento, quindi so quali dovrei lasciare e quali posso disinstallare. Prima di disinstallare qualsiasi pacchetto pip, è necessario acquisire un'istantanea dell'elenco dei pacchetti installati:

$ sudo pip freeze > $HOME/pip_freeze_snapshot.txt

Quindi disinstallare semplicemente i pacchetti desiderati, ad esempio:

$ sudo pip uninstall py pytest

Infine, non dimenticare che alcuni pacchetti pip potrebbero essere stati installati nella tua directory utente. Forse stai bene con quello, ma in caso contrario, puoi elencarli:

$ ls -ltd $HOME/.local/lib/python2.7/site-packages/*

Se vuoi sbarazzarti di tutti questi pacchetti puoi semplicemente cancellare questa directory. Altrimenti, basta disinstallare i singoli pacchetti, ad esempio:

$ pip uninstall tensorflow

Non dimenticare di verificare la presenza di altre versioni di Python (ad es. 3.5).


Consiglierei un annuncio di pubblica sicurezza che rimuovere troppi pacchetti può paralizzare il tuo sistema, ma per il resto questa è una guida eccellente. (Ad esempio, ero contento di averlo fatto mvpiuttosto che rmsu di me /usr/local/lib/python3.6perché ho scoperto pochi minuti dopo che avevo bisogno di alcune cose lì dentro per funzioni di sistema abbastanza basilari.
Iraq
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.