Come rimuovo i pacchetti installati con easy_install di Python?


704

Python's easy_installrende estremamente conveniente l'installazione di nuovi pacchetti. Tuttavia, per quanto ne so, non implementa le altre funzionalità comuni di un gestore dipendenze: elencare e rimuovere i pacchetti installati.

Qual è il modo migliore per scoprire cosa è installato e qual è il modo preferito di rimuovere i pacchetti installati? Ci sono file che devono essere aggiornati se rimuovo i pacchetti manualmente (ad esempio da rm /usr/local/lib/python2.6/dist-packages/my_installed_pkg.eggo simili)?


67
questo post ha quasi 2 anni quando scrivo questo commento. pip ora è efficacemente un sostituto di easy_install e può rimuovere correttamente e in modo pulito i pacchetti (uova incluse) installati da quest'ultimo. Assicurati di votare la risposta suggerendola più in basso nel thread.
Michael Ekoka,

53
L'ossimoro che qualcosa chiamato "easy_install" - non a: ha una controparte easy_uninstall, né b: si preoccupa di menzionare come si può fare nel --help- mi fa impazzire la mia mente / fa infuriare la mia anima / rattrista il mio cuore .
Alex Gray,

13
@mike cosa succede se sto provando a disinstallare pip? (:
mccc,

Risposte:


621

pip , un'alternativa a setuptools / easy_install, fornisce un comando di "disinstallazione".

Installare il pip secondo le istruzioni di installazione :

$ wget https://bootstrap.pypa.io/get-pip.py
$ python get-pip.py

Quindi è possibile utilizzare pip uninstallper rimuovere i pacchetti installati coneasy_install


25
se riscontri problemi con la disinstallazione dei moduli con pip, assicurati che l'installazione stessa di pip sia aggiornata: pip install -U pip # che è una U maiuscola
Michael Ekoka

4
pip ha funzionato per me per disinstallare un pacchetto installato easy_install. Tuttavia, ho dovuto eseguire "pip uninstall <pacchetto>" più volte per rimuovere tutte le versioni del pacchetto. Quindi tienilo a mente. Ha persino rimosso un pacchetto installato "sviluppo", che di conseguenza è stato un po 'un casino.
DragonFax,

2
Ma come elimineresti il ​​pacchetto non attivo
CrazyGeek,

7
Ho usato easy_install per installare pip per disinstallare installazioni easy_install.

2
La risposta dice "installa pip", ma in realtà pip sembra essere integrato con il moderno Python .
Edward,

188

Per disinstallare .eggè necessario rm -rfl'uovo (potrebbe essere una directory) e rimuovere la riga corrispondente dasite-packages/easy-install.pth


18
Il pipgestore pacchetti più recente include una funzione di disinstallazione.
joeforker,

Trovo pip migliore quindi disinstallarlo, perché pip installa da fonti. Se hai come me un nuovissimo Win7 64 bit, ti salverà i giorni :)
daitangio

6
Alcuni usi sono bloccati con una vecchia versione di pip che non ha l'opzione di disinstallazione, quindi questa risposta ha ancora valore.
Mark Pitchless,

5
Probabilmente vale la pena ricordare che questo metodo può lasciare vaganti data_filese scripts(e possibilmente altre categorie di file) sul sistema. L'uovo EGG-INFO/SOURCES.txtcontiene un elenco di tutti i packagefile e sources, ma non data_files, che possono essere installati in qualsiasi directory arbitraria sul tuo sistema ...
Alex Leach

pip non rimuove sempre tutto ciò che easy_install installa. Ecco una piccola esperienza che mi è appena capitata in cui pip non è stato in grado di disinstallare uno dei miei moduli. Ho dovuto rimuovere la riga corrispondente da site-pacchetti / easy-install.pth per disinstallarla completamente.
ychaouche,

158

Per prima cosa devi eseguire questo comando:

$ easy_install -m [PACKAGE]

Rimuove tutte le dipendenze del pacchetto.

Quindi rimuovere il file uovo di quel pacchetto:

$ sudo rm -rf /usr/local/lib/python2.X/site-packages/[PACKAGE].egg


-mnon è il comando easy_install corretto per rimuovere qualsiasi cosa, per quanto posso dire, ma questa risposta fornisce la posizione cruciale dei pacchetti easy_install che altre risposte non forniscono. un rm -rf /usr/local/lib/python*precedente all'installazione di pip è la strada da percorrere mi sembra
fuzzyTew

55

Tutte le informazioni sono nelle altre risposte, ma nessuna riassume entrambe le tue richieste o sembra rendere le cose inutilmente complesse:

  • Per le tue esigenze di rimozione usa:

    pip uninstall <package>

    (installa usando easy_install pip)

  • Per i tuoi "elenchi di pacchetti installati" è necessario utilizzare:

    pip freeze

    O:

    yolk -l

    che può produrre più dettagli del pacchetto.

    (Installa tramite easy_install yolko pip install yolk)


Dopo l'esecuzione yolk -l, vedo che ho pacchetti duplicati come "scipy -0.11.0 -non-active development" e "scipy -0.14.0 ... -active development". Come posso disinstallare questi pacchetti di sviluppo non attivi?
bobbyjoe93,

2
Questo va bene tranne che voglio disinstallare pip che è stato installato da easy_install. Questo perché ha finito per installarlo per la versione errata di Python.
Nagev,

28

Esistono diverse fonti in rete che suggeriscono un hack reinstallando il pacchetto con l'opzione -m e quindi semplicemente rimuovendo il file .egg in lib / e i binari in bin /. Inoltre, la discussione su questo problema di setuptools è disponibile sul tracker dei bug di Python come problema 21 di setuptools .

Modifica: aggiunto il collegamento al bugtracker di Python.


2
Grazie per queste informazioni Per altri riferimenti, ecco il link al problema che hai citato: bugs.python.org/setuptools/issue21
ire_and_curses il

25

Se il problema ti dà fastidio abbastanza grave, potresti considerare virtualenv . Ti consente di creare un ambiente che incapsula le librerie di Python. I pacchetti vengono installati lì anziché nella directory globale dei pacchetti del sito. Tutti gli script che esegui in quell'ambiente hanno accesso a quei pacchetti (e, facoltativamente, anche a quelli globali). Lo uso molto durante la valutazione di pacchetti che non sono sicuro di voler / necessitare di installare a livello globale. Se decidi di non aver bisogno del pacchetto, è abbastanza facile spazzare via quell'ambiente virtuale. È abbastanza facile da usare. Crea un nuovo env:

$>virtualenv /path/to/your/new/ENV

virtual_envt installa setuptools per te nel nuovo ambiente, quindi puoi fare:

$>ENV/bin/easy_install

Puoi persino creare i tuoi script boostrap per impostare il tuo nuovo ambiente. Quindi, con un comando, puoi creare un nuovo env virtuale con, per esempio, python 2.6, psycopg2 e django installati di default (puoi installare una versione specifica di env di python se vuoi).


Che cos'è $>? È un prompt? Forse la correzione di $ sarebbe più utile? Grazie
Gray

19

Istruzioni ufficiali (?): Http://peak.telecommunity.com/DevCenter/EasyInstall#uninstalling-packages

Se hai sostituito un pacchetto con un'altra versione, puoi semplicemente eliminare i pacchetti non necessari eliminando il file PackageName-versioninfo.egg o la directory (che si trova nella directory di installazione).

Se si desidera eliminare la versione attualmente installata di un pacchetto (o tutte le versioni di un pacchetto), è necessario innanzitutto eseguire:

easy_install -mxN PackageName

Questo assicurerà che Python non continui a cercare un pacchetto che stai pianificando di rimuovere. Dopo averlo fatto, puoi eliminare in modo sicuro i file .egg o le directory, insieme a tutti gli script che desideri rimuovere.


Alcune cose non cambiano mai, a quanto pare! PIP ha rifiutato di installare un plug-in di hacking TRAC (trac admin), funziona solo easy_install. Ma ho installato accidentalmente una vecchia versione. E easy_install non è stato in grado di risolverlo dall'URL https per il progetto. Quindi ho usato PIP per rimuoverlo, ma dopo aver reinstallato TRAC non vede il plugin. Quindi uso le informazioni qui per isolare il pkg ed eliminarlo manualmente, quindi reinstallare. wow. (python 2.7)
Richard Cooke,


7

Per elencare i pacchetti Python installati, è possibile utilizzare yolk -l. Dovrai easy_install yolkprima usare però.


6

Ho risposto a questa domanda, mentre cercavo di disinstallare i numerosi pacchetti Python casuali installati nel tempo.

Usando le informazioni da questo thread, questo è quello che mi è venuto in mente:

cat package_list | xargs -n1 sudo pip uninstall -y

Il package_listè ripulito (awk) da una pip freezein un virtualenv.

Per rimuovere quasi tutti i pacchetti Python:

yolk -l | cut -f 1 -d " " | grep -v "setuptools|pip|ETC.." | xargs -n1 pip uninstall -y

<package_list xargs -n1 sudo pip uninstall -yevita un UUOC!
Heini Høgnason,

3

Ho riscontrato lo stesso problema sul mio MacOS X Leopard 10.6.blah.

La soluzione è assicurarti di chiamare MacPorts Python:

sudo port install python26
sudo port install python_select
sudo python_select python26
sudo port install py26-mysql

Spero che sia di aiuto.


1
Tuttavia, sono passato completamente da MacPorts a Brew, nativo Python 2.7 da Mac. MySQLdb installato tramite setup_tools
Cmag

3

Per me solo cancellare questo file: easy-install.pth ha funzionato, resto pip install django == 1.3.7


1

Questo ha funzionato per me. È simile alle risposte precedenti ma il percorso dei pacchetti è diverso.

  1. sudo easy_install -m
  2. sudo rm -rf /Library/Python/2.7/site-packages/.egg

Plaform: MacOS High Sierra versione 10.13.3


1
il primo comando produce questo errore per me:error: No urls, filenames, or requirements specified (see --help)
Michael
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.