2015-07-06 42 views
5

Ho installato il pacchetto in una directory locale specifica utilizzando pip install -t <dir>.pip: Disinstallazione del pacchetto dalla directory specifica

Ora voglio disinstallarlo, ma non riesco a trovare un modo per disinstallare da quella directory specifica. Per uninstall non esiste un'opzione valida -t | --target, che esiste per il comando install.

+0

se si esegue 'lista pip 'puoi vedere il pacchetto? – doru

+0

No, 'pip list' mi mostra l'elenco globale dei pacchetti –

+0

Penso che potresti semplicemente cancellare quella cartella se contiene solo quel pacchetto o eliminare il pacchetto al suo interno se ci sono altri pacchetti nella cartella. – doru

risposta

8

Rimuovere manualmente. pip non mantiene le directory nascoste dei pacchetti installati e scansiona le directory come /usr/local/lib/python2.7/dist-packages direttamente per determinare cosa è installato.

Quindi, se si è installato qualcosa utilizzando -t, basta andare nella directory specificata ed eliminare tutte le tracce, inclusi eventuali file di metadati. Ad esempio,

$ mkdir localpips 
$ pip install -t localpips docopt 
Downloading/unpacking docopt 
    Downloading docopt-0.6.2.tar.gz 
    Running setup.py (path:/tmp/pip_build_garyw/docopt/setup.py) egg_info for package docopt 

Installing collected packages: docopt 
    Running setup.py install for docopt 

Successfully installed docopt 
Cleaning up... 
$ cd localpips 
$ ls -l 
total 48 
drwxr-xr-x 2 garyw garyw 4096 Jul 6 17:27 docopt-0.6.2.egg-info 
-rw-r--r-- 1 garyw garyw 19946 Jul 6 17:27 docopt.py 
-rw-r--r-- 1 garyw garyw 23326 Jul 6 17:27 docopt.pyc 
$ 

di disinstallarlo, basta andare in localpips ed eliminare i file e le directory che sono stati creati.

Lo so, non è così elegante, ea volte non hai idea di cosa possa essere correlato a cosa succede se non osservi attentamente l'installazione, ma così è.

+0

Hai ragione che non è nascosto. Il mio problema riguarda le dipendenze dei pacchetti. Ho installato più pacchetti. Ciascuno ha installato anche le sue dipendenze. Ora ho bisogno di rimuovere uno di loro con le sue dipendenze (ma solo nel caso in cui non sono in uso da altri pacchetti). Non è un compito banale. Ero sicuro che ci dovrebbe essere un opposto di 'pip install -t <...>' –

+1

Purtroppo, pip non ha un robusto tracker di dipendenza, quindi rimuovere un pacchetto (anche nella directory di sistema) non rimuove le sue dipendenze. C'è un modo standard in cui i pacchetti dichiarano i loro requisiti, ma dal momento che non è stato mantenuto alcun database su ciò che richiede cosa in un dato momento, non esiste alcuna opzione di disinstallazione "con dipendenze" indipendentemente dal fatto che si usi '-t' o meno. pacchetto su github chiamato pip-autoremove che esegue analisi e rimozione, ma non supporta le directory personalizzate. :-( –

Problemi correlati