--user
Für pip gibt es eine Option, mit der ein Python-Paket pro Benutzer installiert werden kann:
pip install --user [python-package-name]
Ich habe diese Option verwendet, um ein Paket auf einem Server zu installieren, für den ich keinen Root-Zugriff habe. Was ich jetzt brauche, ist das installierte Paket auf dem 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, mit dem ich installiert habe, deinstallieren pip install --user
, außer das Paket manuell zu suchen und zu löschen?
Ich habe diesen Artikel gefunden
pip kann nicht aus dem Verzeichnis site-packages pro Benutzer deinstalliert werden
Dies beschreibt, dass die Deinstallation von Paketen aus dem Benutzerverzeichnis nicht unterstützt wird. Laut Artikel, wenn es richtig implementiert wurde, dann mit
pip uninstall [package-name]
Das installierte Paket wird auch in Benutzerverzeichnissen durchsucht. Aber ein Problem bleibt für mich immer noch. Was wäre, wenn dasselbe Paket sowohl systemweit als auch pro Benutzer installiert würde? Was ist, wenn jemand auf ein bestimmtes Benutzerverzeichnis abzielen muss?
quelle
--user
Deinstallation ohne--user
das tun, was Sie wollen.Antworten:
Nachdem dies mit Python 3.5 und pip 7.1.2 unter Linux getestet wurde, scheint die Situation wie folgt zu sein:
pip install --user somepackage
Installiert auf$HOME/.local
und die Deinstallation funktioniert mitpip uninstall somepackage
.Dies gilt unabhängig davon, ob
somepackage
gleichzeitig systemweit installiert wird oder nicht .Wenn das Paket an beiden Stellen installiert ist, wird nur das lokale deinstalliert. Um das Paket systemweit mit zu
pip
deinstallieren, deinstallieren Sie es zuerst lokal und führen Sie dann denselben Deinstallationsbefehl mitroot
Berechtigungen erneut aus.pip install --target somedir somepackage
Installiert das Paket zusätzlich zum vordefinierten Benutzerinstallationsverzeichnis insomedir
. Es gibt keine Möglichkeit, ein Paket von einem solchen Ort mit zu deinstallierenpip
. (Aber es gibt eine etwas alte nicht zusammengeführte Pull-Anfrage auf Github, die implementiert wirdpip uninstall --target
.)Da die einzigen Orte
pip
, von denen jemals deinstalliert wird, systemweit und vordefiniert benutzerlokal sind, müssen Siepip uninstall
als der jeweilige Benutzer ausgeführt werden, um die Deinstallation aus dem lokalen Installationsverzeichnis eines bestimmten Benutzers durchzuführen.quelle
jedi
installiert/usr/lib64/python2.7/site-packages/
. Wenn ich es als normaler Benutzer tue:pip install --user jedi
und dannpip uninstall jedi
versucht pip zu deinstallieren/usr/lib64/python2.7/site-packages/jedi
und startet dann mitPermission denied
. Wenn--user
der Befehl uninstall nicht vorhanden ist, wie kann ich uninstall anweisen, nicht zu versuchen,/usr/lib64/python2.7/site-packages/jedi
sondern zu deinstallieren~/.local/lib64/python3.6/site-packages/jedi
?Beispiel zum Deinstallieren des Pakets 'oauth2client' unter MacOS:
quelle
Seien Sie jedoch vorsichtig für diejenigen, die
pip install --user some_pkg
in einer virtuellen Umgebung arbeiten .In diesem Fall müssen Sie die aktuelle virtuelle Umgebung deaktivieren und dann die entsprechende
python
/pip
ausführbare Datei verwenden, um die Benutzer-Site-Pakete aufzulisten oder zu deinstallieren:Beachten Sie, dass dieses Problem vor einigen Jahren gemeldet wurde . Und es scheint, dass die aktuelle Schlussfolgerung lautet:
--user
ist inpip
einer virtuellen Umgebung nicht gültig , da ein Benutzerstandort für eine virtuelle Umgebung nicht wirklich sinnvoll ist.quelle
--user
in der virtuellen Umgebung verwendet, gibt es eine Möglichkeit, daspip list
Ich denke, es ist möglich, mit
--user
Flag installierte Pakete zu deinstallieren . Dieser hat für mich gearbeitet;pip freeze --user | xargs pip uninstall -y
Für Python 3;
pip3 freeze --user | xargs pip3 uninstall -y
Aber irgendwie deinstallieren diese Befehle setuptools und pip nicht. Nach diesen Befehlen (wenn Sie wirklich sauberes Python wollen) können Sie sie mit löschen;
pip uninstall setuptools && pip uninstall pip
quelle
Die Antwort ist noch nicht möglich . Sie müssen es manuell entfernen.
quelle
Wie @ thomas-lotze erwähnt hat, macht Pip Tooling dies derzeit nicht, da es keine entsprechende Option --user gibt. Ich finde jedoch, dass ich in ~ / .local / bin einchecken und nach der spezifischen pip #. # Suchen kann, die für mich so aussieht, als würde sie der Option --user entsprechen.
In meinem Fall:
Und dann einfach mit der spezifischen Pip-Version deinstallieren.
quelle
./pip2 freeze | grep -v "^-e" | xargs pip uninstall -y
für alles außer Paketen, die im bearbeitbaren Modus installiert sindIch verwende Anaconda Version 4.3.22 und eine Python3.6.1-Umgebung und hatte dieses Problem. Hier ist die Geschichte und das Update:
Ich habe dies in meiner python3.6-Umgebung getan und diesen Fehler erhalten.
Als nächstes habe ich versucht, python3.6 herunterzuladen und die python3.dll in den Ordner und in verschiedene Ordner zu legen. Nichts hat sich geändert.
Schließlich wurde dies behoben:
(Die andere Conda-Forge-Version ist noch installiert.) Dies ließ nur die Conda-Version übrig, und das funktioniert in 3.6.
Arbeiten!
quelle