web-dev-qa-db-fra.com

Comment désinstaller un paquet installé avec pip install --user

Il existe une option --user pour pip qui peut installer un package Python par utilisateur:

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

J'ai utilisé cette option pour installer un package sur un serveur pour lequel je n'ai pas d'accès root. Ce dont j'ai besoin maintenant, c'est de désinstaller le paquet installé sur l'utilisateur actuel. J'ai essayé d'exécuter cette commande:

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

Mais j'ai eu:

no such option: --user

Comment puis-je désinstaller un package que j'ai installé avec pip install --user, autre que la recherche et la suppression manuelle du package?

J'ai trouvé cet article 

pip ne peut pas désinstaller à partir du répertoire site-packages par utilisateur

qui décrit que la désinstallation de packages à partir du répertoire utilisateur n’est pas prise en charge. Selon l’article, s’il a été mis en œuvre correctement, alors avec

pip uninstall [package-name]

le paquet qui a été installé sera également recherché dans les répertoires de l'utilisateur. Mais il me reste un problème. Que se passe-t-il si le même package est installé à la fois sur l’ensemble du système et par utilisateur?

138
Serjik

Après avoir testé cela avec Python 3.5 et le pip 7.1.2 sous Linux, la situation semble être la suivante:

  • pip install --user somepackage s'installe sur $HOME/.local et sa désinstallation fonctionne avec pip uninstall somepackage.

  • Cela est vrai que somepackage soit ou non également installé simultanément dans tout le système.

  • Si le paquet est installé aux deux endroits, seul le local sera désinstallé. Pour désinstaller le package à l'échelle du système à l'aide de pip, commencez par le désinstaller localement, puis réexécutez la même commande de désinstallation, avec les privilèges root.

  • En plus du répertoire d'installation utilisateur prédéfini, pip install --target somedir somepackage installera le package dans somedir. Il n'y a aucun moyen de désinstaller un paquet d'un tel endroit en utilisant pip. (Mais il y a une demande d'extraction non fusionnée quelque peu ancienne sur Github qui implémente pip uninstall --target.)

  • Etant donné que les seuls emplacements désinstallés par pip sont les utilisateurs système locaux et prédéfinis, vous devez exécuter pip uninstall en tant qu'utilisateur respectif à désinstaller à partir du répertoire d'installation local de l'utilisateur.

124
Thomas Lotze

exemple pour désinstaller le paquet 'oauth2client' sous MacOS:

pip uninstall oauth2client
19
Huy - Logarit

Attention cependant à ceux qui utilisent pip install --user some_pkg dans un environnement virtuel .

$ 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

Dans ce cas, vous devez désactiver l’environnement virtuel actuel , puis utiliser l’exécutable python/pip correspondant pour répertorier ou désinstaller les packages du site utilisateur:

(my_py_venv) $ deactivate
$ path/to/python -m pip list
$ path/to/python -m pip uninstall some_pkg

Notez que ce problème a été signalé il y a quelques années . Et il semble que le conclusion actuelle soit: --user n'est pas valide dans un environnement virtuel pip, car l'emplacement d'un utilisateur n'a pas vraiment de sens pour un environnement virtuel.

3
YaOzI

Comme @ thomas-lotze l'a mentionné, pip tooling ne le fait pas actuellement car il n'y a pas d'option --user correspondante. Mais ce que je trouve, c'est que je peux vérifier dans ~/.local/bin et rechercher le numéro de pip spécifique. # Qui me semble correspondre à l'option --user.

Dans mon cas:

antho@noctil: ~/.l/bin$ pwd
/home/antho/.local/bin
antho@noctil: ~/.l/bin$ ls pip*
pip  pip2  pip2.7  pip3  pip3.5

Et puis, désinstallez-le avec la version spécifique de pip.

2
AnthonyC

La réponse est Pas encore possible . Vous devez le supprimer manuellement.

2
sorin

Vous pouvez désinstaller tous les packages à la fois.

1. First, install pip-purge.

  pip install pip-purge

2. Then, Run

    pip-purge

Assurez-vous de ne lancer que dans une virtualenv 

0
ParthS007

J'utilise Anaconda version 4.3.22 et un environnement python3.6.1 et j'ai eu ce problème. Voici l'historique et le correctif:

pip uninstall opencv-python # -- the original step. failed.

ImportError: DLL load failed: The specified module could not be found.

Je l'ai fait dans mon environnement python3.6 et j'ai eu cette erreur.

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.

Ensuite, j'ai essayé de télécharger python3.6 et de placer python3.dll dans le dossier et dans divers dossiers. Rien n'a changé. 

enfin, cela a résolu le problème: 

pip uninstall opencv-python

(l'autre version de conda-forge est toujours installée) Cela ne laisse que la version de conda, et cela fonctionne dans la version 3.6. 

>>>import cv2
>>>

travail!

0
Marc Maxmeister