2015-10-29 14 views
60

Es gibt eine --user Option für Pip, die ein Python-Paket pro Benutzer installieren:Wie ein Paket mit pip installieren installiert deinstallieren --user

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

ich diese Option verwenden ein Paket auf einem Server zu installieren was ich keinen Root-Zugang habe. Was ich jetzt brauche, ist das installierte Paket für den aktuellen Benutzer zu deinstallieren. Ich habe versucht, diesen Befehl auszuführen:

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

Aber ich habe:

no such option: --user 

Wie kann ich ein Paket deinstallieren, die ich mit pip install --user installiert, die nicht manuell zu finden und zu löschen, das Paket?

Ich habe diesen Artikel

pip cannot uninstall from per-user site-packages directory

gefunden, die das Verzeichnis der Deinstallation von Paketen von Benutzer beschreibt nicht unterstützt. Laut dem Artikel, wenn es richtig implementiert wurde, dann mit

pip uninstall [package-name] 

das Paket, das installiert wurde, wird auch in Benutzerverzeichnisse gesucht werden. Aber für mich bleibt ein Problem. Was, wenn das gleiche Paket sowohl systemweit als auch pro Benutzer installiert wurde? Was ist, wenn jemand ein bestimmtes Benutzerverzeichnis anvisieren muss?

+1

Nein, Sie müssen eine virtualenv pro Benutzer festlegen: Gruppe und geben Sie richtige Systemberechtigungen für den Ordner, der es enthält. – danigosa

+3

Es gibt keine Möglichkeit, ein Paket systemweit für alle Benutzer zu installieren und es dann für einige Benutzer selektiv zu deinstallieren. Wenn das Paket als '--user' installiert wurde, wird die Deinstallation ohne' --user' das tun, was Sie wollen. – tripleee

+0

@tripleee: Ich habe keine Berechtigung System breit und will nicht, ich muss nur für den aktuellen Benutzer zu deinstallieren – Serjik

Antwort

51

dies mit Python getestet Nachdem 3,5 und pip 7.1.2 auf Linux scheint die Lage, dies zu sein:

  • pip install --user somepackage installiert zu $HOME/.local und Deinstallieren es funktioniert pip uninstall somepackage verwenden.

  • Dies gilt unabhängig davon, ob somepackage auch systemweit gleichzeitig installiert ist.

  • Wenn das Paket an beiden Orten installiert ist, wird nur das lokale Paket deinstalliert. Um das Paket systemweit unter Verwendung von pip zu deinstallieren, deinstallieren Sie es zunächst lokal und führen Sie dann den gleichen Deinstallationsbefehl mit den Berechtigungen root erneut aus.

  • Zusätzlich zum vordefinierten Benutzerinstallationsverzeichnis wird pip install --target somedir somepackage das Paket in somedir installieren. Es gibt keine Möglichkeit, ein Paket von einem solchen Ort mit pip zu deinstallieren. (Aber es ist eine etwas alte unmerged-Pull-Request auf Github, die pip uninstall --target implementiert.)

  • Da die einzigen Orte pip jemals von deinstalliert sind systemweite und vordefinierte Benutzerlokale, müssen Sie pip uninstall wie der jeweilige Benutzer ausführen aus dem lokalen Installationsverzeichnis eines bestimmten Benutzers zu deinstallieren.

3

Die Antwort ist Noch nicht möglich. Sie müssen es manuell entfernen.

+2

Was ist notwendig, um es manuell zu entfernen? – Daniel

+0

Während der Installation eines Pakets gab es eine Rückverfolgung. Deinstallieren hat danach nie funktioniert. – syam

10

Beispiel Paket 'oauth2client' auf MacOS zu deinstallieren:

pip uninstall oauth2client 
0

Als @ thomas-Lotze erwähnt, derzeit pip Werkzeug der das nicht tun, da es keine entsprechende Option --user ist. Aber was ich finde ist, dass ich ~/.local/bin einchecken kann und nach dem bestimmten pip #. # Suche, das mir so aussieht, als ob es der Option --user entspricht.

In meinem Fall:

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

Und dann nur mit der spezifischen pip Version deinstallieren.

Verwandte Themen