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?
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.
exemple pour désinstaller le paquet 'oauth2client' sous MacOS:
pip uninstall oauth2client
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.
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.
La réponse est Pas encore possible . Vous devez le supprimer manuellement.
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
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!