Comment supprimer les packages installés avec easy_install de Python?


704

Python easy_installrend l'installation de nouveaux packages extrêmement pratique. Cependant, pour autant que je sache, il n'implémente pas les autres fonctionnalités communes d'un gestionnaire de dépendances - répertoriant et supprimant les packages installés.

Quelle est la meilleure façon de savoir ce qui est installé et quelle est la meilleure façon de supprimer les packages installés? Y a-t-il des fichiers qui doivent être mis à jour si je supprime des packages manuellement (par exemple par rm /usr/local/lib/python2.6/dist-packages/my_installed_pkg.eggou similaire)?


67
cet article a presque 2 ans au moment où j'écris ce commentaire. pip est maintenant effectivement un remplacement pour easy_install et peut supprimer correctement et proprement les paquets (oeufs inclus) installés par ce dernier. Veuillez vous assurer de noter la réponse en la suggérant plus loin dans le fil.
Michael Ekoka

53
L'oxymore que quelque chose appelé "easy_install" - n'a pas : a un homologue easy_uninstall, ni b: se donne la peine de mentionner comment on peut le faire dans le --help- embrouille mon esprit / _folie mon âme / attriste mon cœur .
Alex Gray

13
@mike et si j'essaye de désinstaller pip? (:
mccc

Réponses:


621

pip , une alternative à setuptools / easy_install, fournit une commande "désinstaller".

Installez pip conformément aux instructions d'installation :

$ wget https://bootstrap.pypa.io/get-pip.py
$ python get-pip.py

Ensuite, vous pouvez utiliser pip uninstallpour supprimer les packages installés aveceasy_install


25
si vous rencontrez des problèmes lors de la désinstallation des modules avec pip, assurez-vous que votre installation pip elle-même est à jour: pip install -U pip # qui est un U majuscule
Michael Ekoka

4
pip a travaillé pour moi pour désinstaller un paquet installé easy_install. J'ai dû exécuter plusieurs fois 'pip uninstall <package>' pour supprimer toutes les versions du package. Donc, retiens-le bien. Il a même supprimé un package installé «develop», ce qui était en quelque sorte un gâchis.
DragonFax

2
Mais comment supprimeriez-vous le package non actif
CrazyGeek

7
J'ai utilisé easy_install pour installer pip pour désinstaller les installations easy_install.

2
La réponse dit "installer pip", mais en fait, pip semble être intégré au Python moderne .
Edward

188

Pour désinstaller un dont .eggvous avez besoin sur rm -rfl'oeuf (il peut s'agir d'un répertoire) et supprimez la ligne correspondante desite-packages/easy-install.pth


18
Le nouveau pipgestionnaire de packages inclut une fonction de désinstallation.
joeforker

Je trouve pip meilleur que désinstaller, car pip s'installe à partir des sources. Si vous avez comme moi un tout nouveau Win7 64bit, cela vous fera gagner du temps :)
daitangio

6
Certaines utilisations sont bloquées avec une ancienne version de pip qui n'a pas l'option de désinstallation, donc cette réponse vaut toujours la peine.
Mark Pitchless du

5
Il vaut probablement la peine de mentionner que cette méthode peut laisser errant data_fileset scripts(et éventuellement d'autres catégories de fichiers) sur le système. L'œuf EGG-INFO/SOURCES.txtcontient une liste de tous les packagefichiers et sources, mais pas data_files, qui peuvent être installés dans n'importe quel répertoire arbitraire de votre système ...
Alex Leach

pip ne supprime pas toujours toutes les installations d'easy_install. Voici une petite expérience qui vient de m'arriver où pip n'a pas pu désinstaller l'un de mes modules. J'ai dû supprimer la ligne correspondante de site-packages / easy-install.pth pour la désinstaller complètement.
ychaouche

158

Vous devez d'abord exécuter cette commande:

$ easy_install -m [PACKAGE]

Il supprime toutes les dépendances du package.

Ensuite, supprimez le fichier d'oeuf de ce paquet:

$ sudo rm -rf /usr/local/lib/python2.X/site-packages/[PACKAGE].egg


-mn'est pas la commande easy_install appropriée pour supprimer quoi que ce soit pour autant que je sache, mais cette réponse donne l'emplacement crucial des packages easy_install que les autres réponses ne font pas. un rm -rf /usr/local/lib/python*avant d'installer pip est la voie à suivre, il me semble
fuzzyTew

55

Toutes les informations se trouvent dans les autres réponses, mais aucune ne résume à la fois vos demandes ou ne semble rendre les choses inutilement complexes:

  • Pour vos besoins de suppression, utilisez:

    pip uninstall <package>

    (installez en utilisant easy_install pip)

  • Pour vos besoins de «liste des packages installés», utilisez:

    pip freeze

    Ou:

    yolk -l

    qui peut afficher plus de détails sur le package.

    (Installer via easy_install yolkou pip install yolk)


Après l'exécution yolk -l, je constate que j'ai des packages en double tels que "scipy -0.11.0 -non-active development" et "scipy -0.14.0 ... -active development". Comment puis-je désinstaller ces packages de développement non actifs?
bobbyjoe93

2
C'est bien sauf que je veux désinstaller pip qui a été installé par easy_install. C'est parce qu'il a fini par l'installer pour la mauvaise version de Python.
Nagev

28

Il existe plusieurs sources sur le net suggérant un piratage en réinstallant le paquet avec l'option -m puis en supprimant simplement le fichier .egg dans lib / et les binaires dans bin /. En outre, une discussion sur ce problème setuptools peut être trouvée sur le suivi des bogues python en tant que problème 21 de setuptools .

Edit: Ajout du lien vers le bugtracker python.


2
Merci pour cette info. Pour d'autres références, voici le lien vers le problème que vous avez mentionné: bugs.python.org/setuptools/issue21
ire_and_curses

25

Si le problème vous dérange suffisamment, vous pouvez envisager virtualenv . Il vous permet de créer un environnement qui encapsule les bibliothèques python. Vous y installez des packages plutôt que dans le répertoire global des packages de site. Tous les scripts que vous exécutez dans cet environnement ont accès à ces packages (et éventuellement à vos packages globaux). Je l'utilise beaucoup lors de l'évaluation de packages que je ne suis pas sûr de vouloir / devoir installer globalement. Si vous décidez que vous n'avez pas besoin du package, il est assez facile de simplement éliminer cet environnement virtuel. C'est assez simple à utiliser. Faites un nouvel env:

$>virtualenv /path/to/your/new/ENV

virtual_envt installe setuptools pour vous dans le nouvel environnement, vous pouvez donc faire:

$>ENV/bin/easy_install

Vous pouvez même créer vos propres scripts boostrap qui configurent votre nouvel environnement. Ainsi, avec une seule commande, vous pouvez créer un nouvel env virtuel avec, disons, python 2.6, psycopg2 et django installés par défaut (vous pouvez installer une version de python spécifique à env si vous le souhaitez).


Qu'est-ce que $>? Est-ce une invite? Peut-être que corriger en $ serait plus utile? Merci
Gray

19

Instructions officielles (?): Http://peak.telecommunity.com/DevCenter/EasyInstall#uninstalling-packages

Si vous avez remplacé un package par une autre version, vous pouvez simplement supprimer le ou les packages dont vous n'avez pas besoin en supprimant le fichier ou le répertoire PackageName-versioninfo.egg (situé dans le répertoire d'installation).

Si vous souhaitez supprimer la version actuellement installée d'un package (ou toutes les versions d'un package), vous devez d'abord exécuter:

easy_install -mxN PackageName

Cela garantira que Python ne continuera pas à rechercher un package que vous prévoyez de supprimer. Après cela, vous pouvez supprimer en toute sécurité les fichiers ou répertoires .egg, ainsi que tous les scripts que vous souhaitez supprimer.


Il semble que certaines choses ne changent jamais! PIP a refusé d'installer un plugin de piratage TRAC (admin trac), seul easy_install fonctionne. Mais j'ai accidentellement installé une ancienne version. Et easy_install n'a pas pu résoudre ce problème à partir de l'URL https du projet. J'ai donc utilisé PIP pour le supprimer, mais après avoir réinstallé TRAC ne voit pas le plugin. J'utilise donc les informations ici pour isoler le paquet et le supprimer manuellement, puis le réinstaller. ouf. (python 2.7)
Richard Cooke


7

Pour répertorier les packages Python installés, vous pouvez utiliser yolk -l. Vous devrez cependant utiliser d' easy_install yolkabord.


6

Je suis tombé sur cette question, tout en essayant de désinstaller les nombreux packages Python aléatoires installés au fil du temps.

En utilisant les informations de ce fil, voici ce que j'ai trouvé:

cat package_list | xargs -n1 sudo pip uninstall -y

Le package_listest nettoyé (awk) d'un pip freezedans un virtualenv.

Pour supprimer presque tous les packages Python:

yolk -l | cut -f 1 -d " " | grep -v "setuptools|pip|ETC.." | xargs -n1 pip uninstall -y

<package_list xargs -n1 sudo pip uninstall -yévite une UUOC!
Heini Høgnason

3

J'ai rencontré le même problème sur mon MacOS X Leopard 10.6.blah.

La solution est de vous assurer que vous appelez le MacPorts Python:

sudo port install python26
sudo port install python_select
sudo python_select python26
sudo port install py26-mysql

J'espère que cela t'aides.


1
Cependant, je suis complètement passé de MacPorts à Brew, python 2.7 natif de mac. MySQLdb installé via setup_tools
Cmag

3

Pour moi, supprimer uniquement ce fichier: easy-install.pth a fonctionné, reste pip install django == 1.3.7


1

Cela a fonctionné pour moi. C'est similaire aux réponses précédentes mais le chemin vers les packages est différent.

  1. sudo easy_install -m
  2. sudo rm -rf /Library/Python/2.7/site-packages/.egg

Plateforme: MacOS High Sierra version 10.13.3


1
première commande produit cette erreur pour moi:error: No urls, filenames, or requirements specified (see --help)
Michael
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.