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

58

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

  • en utilisant une version plus ancienne de virtualenv, j'ai oublié d'ajouter --no-site-packages lors de la création de virtualenv - après cela, j'ai appelé pip install , les paquets Python installés sur le système plutôt que virtualenv
  • dans un virtualenv correctement configuré, j'ai tapé sudo pip install somepackage - le sudo installé sur le système plutôt que le virtualenv

J'ai remarqué cela parce que j'ai tapé pip freeze en dehors de virtualenv et que j'ai repéré des paquets Python listés qui ne devraient pas être présents. Alors maintenant ma question est:

  • Comment puis-je identifier tous les packages Python installés par erreur sur le système (c'est-à-dire les packages Python qui apparaissent dans la liste pip freeze , mais qui n'ont pas été installés avec apt-get )?
  • comment puis-je les supprimer?
posée d3vid 08.08.2012 - 10:48
la source

5 réponses

51

Ubuntu Oneiric (et je pense que les nouvelles versions aussi) installent les paquets pip sur /usr/local/lib/python2.7/dist-packages et apt sur /usr/lib/python2.7/dist-packages . Il suffit donc de vérifier l'ancien répertoire et sudo pip uninstall tous les paquets que vous y trouverez.

    
réponse donnée Capi Etheriel 22.02.2013 - 13:48
la source
9

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

pip freeze > dump.txt

Modifiez le fichier vidé pour supprimer toutes les lignes -e "editable install", tout ce qui suit le signe == ( %s;==.*;;g in vim), remplacez les nouvelles lignes par des espaces ( %s;\n; ;g in vim). Ensuite, vous pouvez désinstaller tous les paquets non possédés avec

cat dump.txt | xargs sudo pip uninstall -y

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

    
réponse donnée Henry Schreiner 26.10.2015 - 15:54
la source
6

AFAIK sudo pip install installera 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 des paquets et listera tout ce qui est installé, à la fois depuis pip et apt-get en dehors de virtualenvs. Il y a l'option -l dans l'environnement virtuel pour lister les paquets uniquement applicables à cet environnement virtuel, mais il semble que ce soit aussi un cas par défaut dans l'environnement virtuel. Je pense que vous pouvez simplement supprimer les paquets connexes sur /usr/local/lib/pythonVERSION/dist-packages aussi bien que la méthode pas très pratique je suppose.

    
réponse donnée sagarchalise 08.08.2012 - 13:01
la source
5

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

pip uninstall < package-name >

Pour rechercher des paquets

pip search <package you want to search for>

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

sudo apt-get install python3
    
réponse donnée Mitch 08.08.2012 - 11:13
la source
-1

Cela a quelque chose à voir avec Homebrew. Je n'ai eu aucun problème avec pyodbc sur mon Mac Air jusqu'à ce que j'installe Homebrew et l'utilise pour quelques petites choses. J'ai trouvé cette discussion sur github qui se termine par une solution qui a fonctionné pour moi.

"Si vous avez Homebrew, installez simplement les en-têtes ODBC:

$ brew install unixodbc

et lancez à nouveau "pip install pyodbc".

Ce 100% a résolu le problème pour moi et a seulement pris un moment. Donner un coup de feu.

    
réponse donnée Pogo 04.07.2017 - 18:15
la source

Lire d'autres questions sur les étiquettes