2015-10-29 2 views
60

C'è un'opzione --user per i pip che può installare un pacchetto di Python per utente:Come disinstallare un pacchetto installato con pip installare --user

pip install --user [python-package-name] 

Ho usato questa opzione per installare un pacchetto su un server per di cui non ho l'accesso come root. Quello di cui ho bisogno ora è disinstallare il pacchetto installato sull'utente corrente. Ho cercato di eseguire questo comando:

pip uninstall --user [python-package-name] 

Ma ho ottenuto:

no such option: --user 

Come posso disinstallare un pacchetto che ho installato con pip install --user, diverso da trovare ed eliminare manualmente il pacchetto?

ho trovato questo articolo

pip cannot uninstall from per-user site-packages directory

che descrive che i pacchetti di disinstallazione dalla directory utente non supportati. Secondo l'articolo se è stato implementato correttamente quindi con

pip uninstall [package-name] 

il pacchetto che è stato installato verrà anche cercato nelle directory degli utenti. Ma un problema rimane ancora per me. Cosa accadrebbe se lo stesso pacchetto fosse installato sia a livello di sistema che per utente? Cosa succede se qualcuno ha bisogno di indirizzare una directory utente specifica?

+1

No, è necessario impostare un virtualenv per utente: gruppo e fornire le autorizzazioni di sistema appropriate alla cartella che lo contiene. – danigosa

+3

Non è possibile installare un pacchetto in tutto il sistema per tutti gli utenti e quindi disinstallarlo in modo selettivo per alcuni utenti. Se il pacchetto è stato installato come '--user', la disinstallazione senza' --user' farà ciò che vuoi. – tripleee

+0

@ tripleee: Non ho il permesso per l'intero sistema e non lo voglio, ho solo bisogno di disinstallarlo per l'utente corrente – Serjik

risposta

51

Dopo aver testato questo utilizzando Python 3.5 e 7.1.2 pip su Linux, la situazione sembra essere questo:

  • pip install --user somepackage installa a $HOME/.local, e la disinstallazione funziona utilizzando pip uninstall somepackage.

  • Questo è vero indipendentemente dal fatto che somepackage sia installato anche a livello di sistema nello stesso momento.

  • Se il pacchetto è installato in entrambe le posizioni, verrà disinstallato solo quello locale. Per disinstallare il pacchetto a livello di sistema utilizzando pip, disinstallarlo localmente, quindi eseguire di nuovo lo stesso comando di disinstallazione, con i privilegi root.

  • Oltre alla directory di installazione utente predefinita, pip install --target somedir somepackage installa il pacchetto in somedir. Non c'è modo di disinstallare un pacchetto da una tale posizione usando pip. (Ma c'è un po 'vecchio richiesta di pull unmerged su Github che implementa pip uninstall --target.)

  • Poiché gli unici luoghi pip sarà mai la disinstallazione da sono e predefiniti dall'utente locale a livello di sistema, è necessario eseguire pip uninstall come il rispettivo utente disinstallare dalla directory di installazione locale di un dato utente.

3

la risposta non è ancora possibile . Devi rimuoverlo manualmente.

+2

cosa è necessario rimuovere manualmente? – Daniel

+0

Durante l'installazione di un pacchetto, c'era un traceback. La disinstallazione non ha mai funzionato dopo. – syam

10

esempio per disinstallare pacchetto 'oauth2client' su MacOS:

pip uninstall oauth2client 
0

Come @ Thomas-Lotze ha menzionato, attualmente utensili pip non fa che, poiché non corrisponde alcun --user opzione. Ma quello che trovo è che posso controllare in ~/.local/bin e cercare il pip specifico #. # Che mi sembra che corrisponda all'opzione --user.

Nel mio caso:

[email protected]  ~/.l/bin  pwd 
/home/antho/.local/bin 
[email protected]  ~/.l/bin  ls pip* 
pip pip2 pip2.7 pip3 pip3.5 

E poi basta disinstallare la versione specifica PIP.