Es gibt eine --user
-Option für pip, mit der pro Benutzer ein Python-Paket 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 bekam:
no such option: --user
Wie kann ich ein mit pip install --user
installiertes Paket deinstallieren, außer das Paket manuell suchen und löschen zu müssen?
Ich habe diesen Artikel gefunden
pip kann nicht aus dem Site-Packages-Verzeichnis der Benutzer gelöscht werden
dies beschreibt, dass die Deinstallation von Paketen aus dem Benutzerverzeichnis nicht unterstützt wird. Laut dem Artikel wenn es dann korrekt mit umgesetzt wurde
pip uninstall [package-name]
das installierte Paket wird auch in Benutzerverzeichnissen durchsucht. Für mich bleibt jedoch ein Problem. Was ist, wenn dasselbe Paket sowohl systemweit als auch pro Benutzer installiert wurde?
Nachdem Sie dies mit Python 3.5 und Pip 7.1.2 unter Linux getestet haben, scheint die Situation die folgende zu sein:
pip install --user somepackage
wird auf $HOME/.local
installiert, und die Deinstallation funktioniert mit pip uninstall somepackage
.
Dies gilt unabhängig davon, ob somepackage
gleichzeitig systemweit installiert ist oder nicht.
Wenn das Paket an beiden Orten installiert ist, wird nur das lokale Paket deinstalliert. Um das Paket systemweit mit pip
zu deinstallieren, deinstallieren Sie es zunächst lokal und führen Sie dann denselben Deinstallationsbefehl erneut mit den Berechtigungen root
aus.
Zusätzlich zum vordefinierten Benutzerinstallationsverzeichnis wird pip install --target somedir somepackage
das Paket in somedir
installieren. Es ist nicht möglich, ein Paket an einem solchen Ort mit pip
zu deinstallieren. (Es gibt jedoch eine etwas alte, nicht zusammengeführte Pull-Anforderung auf Github, die pip uninstall --target
implementiert.)
Da pip
nur von einem Ort aus deinstalliert wird, die systemweit und vordefiniert sind, müssen Sie pip uninstall
als jeweiligen Benutzer ausführen, um die Deinstallation aus dem lokalen Installationsverzeichnis eines bestimmten Benutzers durchzuführen.
beispiel zum Deinstallieren des Pakets 'oauth2client' unter MacOS:
pip uninstall oauth2client
Seien Sie jedoch vorsichtig, wenn Sie pip install --user some_pkg
in einer virtuellen Umgebung verwenden .
$ path/to/python -m venv ~/my_py_venv
$ source ~/my_py_venv/bin/activate
(my_py_venv) $ pip install --user some_pkg
(my_py_venv) $ pip uninstall some_pkg
WARNING: Skipping some_pkg as it is not installed.
(my_py_venv) $ pip list
# Even `pip list` will not properly list the `some_pkg` in this case
In diesem Fall müssen Sie die aktuelle virtuelle Umgebung deaktivieren und dann die entsprechende ausführbare Datei python
/pip
verwenden, um oder aufzulisten Deinstallieren Sie die Benutzer-Site-Pakete:
(my_py_venv) $ deactivate
$ path/to/python -m pip list
$ path/to/python -m pip uninstall some_pkg
Beachten Sie, dass dieses Problem wurde vor einigen Jahren gemeldet . Und es scheint, dass aktuelle Schlussfolgerung ist: --user
ist nicht gültig innerhalb des pip
einer virtuellen Umgebung, da ein Benutzerstandort für eine virtuelle Umgebung nicht wirklich sinnvoll ist.
Wie @ thomas-lotze erwähnt hat, macht das Pip-Tooling dies derzeit nicht, da es keine entsprechende Option --user gibt. Was ich aber finde, ist, dass ich in ~/.local/bin einchecken und nach dem spezifischen pip #. # Suchen kann, der für mich 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 einfach mit der jeweiligen Pip-Version deinstallieren.
Die Antwort ist Noch nicht möglich . Sie müssen es manuell entfernen.
Sie können alle Pakete gleichzeitig deinstallieren.
1. First, install pip-purge.
pip install pip-purge
2. Then, Run
pip-purge
Stellen Sie sicher, dass Sie nur in einer virtuellen Umgebung ausgeführt werden
Ich verwende Anaconda Version 4.3.22 und eine Python3.6.1-Umgebung und hatte dieses Problem. Hier ist die Geschichte und der Fix:
pip uninstall opencv-python # -- the original step. failed.
ImportError: DLL load failed: The specified module could not be found.
Ich habe dies in meiner python3.6-Umgebung gemacht und diesen Fehler erhalten.
python -m pip install opencv-python # same package as above.
conda install -c conda-forge opencv # separate install parallel to opencv
pip-install opencv-contrib-python # suggested by another user here. doesn't resolve it.
Als Nächstes versuchte ich, python3.6 herunterzuladen und die python3.dll im Ordner und in verschiedenen Ordnern abzulegen. Nichts hat sich verändert.
endlich wurde dies behoben:
pip uninstall opencv-python
(Die andere Conda-Forge-Version ist noch installiert.) Es blieb nur die Conda-Version übrig, und das funktioniert in 3.6.
>>>import cv2
>>>
arbeiten!