web-dev-qa-db-fra.com

Comment détecter et supprimer les packages Python installés via pip?

J'ai accidentellement installé Python paquets sur mon système en utilisant pip au lieu de apt-get. Je l'ai fait de deux manières:

  • en utilisant une ancienne version de virtualenv, j’ai oublié d’ajouter --no-site-packages lors de la création de virtualenv - ensuite, lorsque j’ai appelé pip install, les packages Python ont été installés sur le système plutôt que virtualenv.
  • dans une virtualenv correctement configurée, j’ai tapé Sudo pip install somepackage - le Sudo installé sur le système plutôt que le virtualenv

Je me suis rendu compte de cela parce que j’ai tapé pip freeze en dehors d’un virtualenv, et j’ai repéré des paquets Python énumérés qui ne devraient pas être là. Alors maintenant ma question est:

  • comment identifier tous les packages Python qui ont été installés par erreur sur le système (c'est-à-dire, les packages Python apparaissant dans la liste pip freeze mais n'ayant pas été installés avec apt-get)?
  • comment puis-je les supprimer?
67
david.libremone

Ubuntu Oneiric (et j'attends également les versions les plus récentes) installe les packages pip sur /usr/local/lib/python2.7/dist-packages et les packages apt sur /usr/lib/python2.7/dist-packages. Il suffit donc de vérifier l’ancien répertoire et Sudo pip uninstall chaque paquet que vous trouvez là.

56
Capi Etheriel

Pip ignore actuellement les commandes de désinstallation qui tentent de désinstaller quelque chose appartenant au système d'exploitation. Il ne fait pas d'erreur, comme c'est le cas avec un paquet manquant. Donc, maintenant, vous pouvez désinstaller avec le processus suivant:

pip freeze > dump.txt

Editez le fichier vidé pour supprimer toutes les lignes -e "installation éditable", tout ce qui suit le signe == (%s;==.*;;g dans vim), remplacez les nouvelles lignes par des espaces (%s;\n; ;g dans vim). Ensuite, vous pouvez désinstaller tous les packages non propriétaires avec

cat dump.txt | xargs Sudo pip uninstall -y

J'ai dû faire cette procédure deux fois, car quelques paquets ont également été installés dans ~/.local/lib.

17
Henry Schreiner

Autant que je sache, Sudo pip install sera installé sur /usr/local/lib/pythonVERSION/dist-packages. Vous devez exécuter Sudo pip uninstall pour désinstaller les packages à l'échelle du système. Il semble que pip freeze recherche les métadonnées du paquet et répertorie tout ce qui est installé, à la fois depuis pip et depuis apt-get en dehors de virtualenvs. Il existe une option -l dans l'environnement virtuel pour répertorier les packages uniquement applicables à cet environnement virtuel, mais cela semble également être le cas par défaut dans l'environnement virtuel. Je pense que vous pouvez simplement supprimer les paquets liés sur /usr/local/lib/pythonVERSION/dist-packages également, mais la méthode n’est pas très pratique, je suppose.

6
sagarchalise

Pour supprimer un paquet installé via pip, appuyez simplement sur Ctrl+Alt+T sur votre clavier pour ouvrir Terminal. Quand il s'ouvre, lancez la commande ci-dessous.

pip uninstall < package-name >

Pour rechercher des forfaits

pip search <package you want to search for>

Pour déterminer quels packages Python ont été installés par pip, à l'aide de la commande freeze, qui vous fournira une liste des packages installés et de leurs versions. Je suggère de supprimer toutes les instances et de réinstaller à l'aide de la commande Sudo apt-get

Sudo apt-get install python3
5
Mitch

Je devais nettoyer l'espace disque de Python packages en toute sécurité. Bien qu'il s'agisse d'un nettoyage complet des paquets, j'avais besoin de déplacer les versions de Python afin de ne pas avoir besoin d'anciens paquets. J'ai utilisé ce qui suit pour obtenir tous les noms de mes paquets, ignorer les 2 premières lignes et récupérer la première colonne, puis désinstaller sans interaction de l'utilisateur:

pip list | awk 'NR>2 {print $1}' | xargs -I {} pip uninstall -y {}
0
m1st0