web-dev-qa-db-fra.com

désinstaller python setup.py

J'ai installé un paquet python avec python setup.py install.

Comment puis-je le désinstaller?

689
flybywire

Vous devez supprimer tous les fichiers manuellement et annuler tout autre élément créé manuellement par l'installation.

Si vous ne connaissez pas la liste de tous les fichiers, vous pouvez le réinstaller avec l'option --record et consulter la liste produite.

Pour enregistrer une liste de fichiers installés, vous pouvez utiliser:

python setup.py install --record files.txt

Une fois que vous souhaitez désinstaller, vous pouvez utiliser xargs pour procéder à la suppression:

cat files.txt | xargs rm -rf

Ou, si vous utilisez Windows, utilisez Powershell: 

Get-Content files.txt | ForEach-Object {Remove-Item $_ -Recurse -Force}

Supprimez ensuite le répertoire contenant, par exemple. /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/my_module-0.1.Egg/ sur macOS. Il n'a pas de fichier, mais Python importera quand même un module vide:

>>> import my_module
>>> my_module.__file__
None

Une fois supprimé, Python affiche:

>>> import my_module
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'my_module'
877
Martin v. Löwis

Pour moi, ce qui suit fonctionne principalement:

ont installé pip, par exemple:

$ easy_install pip

Vérifiez comment votre paquet installé est nommé du point de vue de pip:

$ pip freeze

Cela doit lister les noms de tous les paquets que vous avez installés (et qui ont été détectés par pip) . Le nom peut être parfois long, puis utilisez simplement le nom du paquet affiché à la fin du #Egg=. Vous pouvez également, dans la plupart des cas, ignorer la partie de version (ce qui suit == ou -).

Puis désinstallez le paquet:

$ pip uninstall package.name.you.have.found

S'il vous demande de confirmer l'enlèvement du colis, vous êtes chanceux et il sera retiré.

pip doit détecter tous les paquets qui ont été installés par pip. Il détectera également la plupart des paquets installés via easy_install ou setup.py, mais cela peut échouer dans de rares cas.

Voici un exemple réel de mon test local avec le paquet nommé ttr.rdstmc sous MS Windows.

$ pip freeze |grep ttr
ttr.aws.s3==0.1.1dev
ttr.aws.utils.s3==0.3.0
ttr.utcutils==0.1.1dev

$ python setup.py develop
.....
.....
Finished processing dependencies for ttr.rdstmc==0.0.1dev

$ pip freeze |grep ttr
ttr.aws.s3==0.1.1dev
ttr.aws.utils.s3==0.3.0
-e hg+https://[email protected]/vlcinsky/ttr.rdstmc@d61a9922920c508862602f7f39e496f7b99315f0#Egg=ttr.rdstmc-dev
ttr.utcutils==0.1.1dev

$ pip uninstall ttr.rdstmc
Uninstalling ttr.rdstmc:
  c:\python27\lib\site-packages\ttr.rdstmc.Egg-link
Proceed (y/n)? y
  Successfully uninstalled ttr.rdstmc

$ pip freeze |grep ttr
ttr.aws.s3==0.1.1dev
ttr.aws.utils.s3==0.3.0
ttr.utcutils==0.1.1dev

Edit 2015-05-20

Tout ce qui est écrit ci-dessus s'applique toujours, de toute façon, de petites modifications sont disponibles maintenant.

Installer pip dans python 2.7.9 et python 3.4

Les versions récentes de Python sont fournies avec un paquetage ensurepip permettant d'installer pip même en étant hors ligne:

$ python -m Ensurepip --upgrade

Sur certains systèmes (comme Debian Jessie), cela n’est pas disponible (pour empêcher l’interruption de l’installation du système python).

Utilisation de grep ou find

Les exemples ci-dessus supposent que vous avez installé grep. J'avais (à l'époque j'avais MS Windows sur ma machine) installé un ensemble d'utilitaires Linux (y compris grep). Vous pouvez également utiliser MS Windows find ou ignorer simplement ce filtrage pour trouver le nom dans une liste un peu plus longue des packages python détectés.

206
Jan Vlcinsky

La réponse n ° 1 a des problèmes:

  • Ne fonctionnera pas sur mac.
  • Si un fichier comportant des espaces ou d’autres caractères Spéciaux est installé, la commande xargs échouera et supprimera tous les fichiers/répertoires
  • le -r dans rm -rf est inutile et, au pire, peut supprimer des choses que vous ne voulez pas.

Au lieu de cela, pour Unix-like:

Sudo python setup.py install --record files.txt
# inspect files.txt to make sure it looks ok. Then:
tr '\n' '\0' < files.txt | xargs -0 Sudo rm -f --

Et pour les fenêtres:

python setup.py bdist_wininst
dist/foo-1.0.win32.exe

La désinstallation de setup.py install pose également des problèmes insolubles qui ne vous dérangeront pas dans un cas typique. Pour une réponse plus complète, voir cette page wiki:

https://ofswiki.org/wiki/Uninstalling_setup.py_install

67
Ian Kelling

Commencez par enregistrer les fichiers que vous avez installés. Vous pouvez répéter cette commande, même si vous avez déjà exécuté setup.py install:

python setup.py install --record files.txt

Lorsque vous souhaitez désinstaller, vous pouvez simplement:

Sudo rm $(cat files.txt)

Cela fonctionne parce que la commande rm prend une liste de fichiers à supprimer séparés par des espaces et que votre enregistrement d'installation est une telle liste.

31
nathan

Maintenant, python vous donne le choix d'installer pip lors de l'installation (je suis sous Windows et au moins python le fait pour Windows!). Considérant que vous avez choisi d’installer pip lors de l’installation de python (vous n’avez pas à choisir, car c’est la valeur par défaut), pip est déjà installé pour vous. Ensuite, tapez pip dans Invite de commande, une aide s’affiche. Vous pouvez y trouver les instructions d'utilisation nécessaires. Par exemple. pip list vous montre la liste des paquets installés. Vous pouvez utiliser

pip uninstall package_name

désinstaller tout paquet que vous ne voulez plus. En savoir plus ici (documentation pip) .

13
Sнаđошƒаӽ

La méthode la plus simple: désinstallez-la simplement à partir du menu d'installation de Windows (si vous utilisez Windows) ou de la commande rpm, à condition de la réinstaller au préalable après avoir créé un package de distribution.

Par exemple,

python setup.py bdist_wininst
dist/foo-1.0.win32.exe

("foo" étant un exemple bien sûr).

8
RedGlyph

Allez dans le répertoire de votre paquet python et supprimez votre fichier .Egg,

En python 2.6 (ubuntu): /usr/local/lib/python2.6/dist-packages/

5
user149513

Vous pouvez probablement faire cela comme alternative: -

1) Obtenez la version python -

[linux machine]# python
Python 2.4.3 (#1, Jun 18 2012, 14:38:55) 

-> La commande ci-dessus vous donne la version actuelle de python qui est 2.4.3

2) Obtenez le répertoire d’installation de python -

[linux machine]# whereis python
python: /usr/bin/python /usr/bin/python2.4 /usr/lib/python2.4 /usr/local/bin/python2.5 /usr/include/python2.4 /usr/share/man/man1/python.1.gz

-> À partir de la commande ci-dessus, vous pouvez obtenir le répertoire d'installation qui est - /usr/lib/python2.4/site-packages

3) À partir de là, vous pouvez supprimer les paquets et les fichiers python Egg.

[linux machine]# cd /usr/lib/python2.4/site-packages
[linux machine]# rm -rf paramiko-1.12.0-py2.4.Egg paramiko-1.7.7.1-py2.4.Egg paramiko-1.9.0-py2.4.Egg

Cela a fonctionné pour moi .. Et j'ai pu désinstaller le paquet qui me troublait :)

3
COD3R

Je pense que vous pouvez ouvrir le fichier setup.py, localiser le nom du paquet, puis demander à pip de le désinstaller.

En supposant que le nom soit disponible dans une variable 'METADATA':

pip uninstall $(python -c "from setup import METADATA; print METADATA['name']")
3
ThorSummoner

Pas exactement répondre à la question, mais quelque chose qui m'aide tous les jours: 

Installez vos paquets avec

pip install .

Cela met le paquet dans $HOME/.local. Désinstaller avec

pip uninstall <package_name>
2
Nico Schlömer

En prolongeant ce que Martin a dit, enregistrer la sortie d'installation et un peu de script bash fait très bien l'affaire. Voici ce que je fais ...

for i in $(less install.record);
Sudo rm $i;
done;

Et hop. Désinstallé.

1
seabass

J'avais exécuté "python setup.py install" à un moment donné dans mon environnement global, par accident, et j'avais beaucoup de difficulté à désinstaller. Ces solutions n'ont pas aidé. "pip uninstall" ne fonctionne pas avec "Vous ne pouvez pas désinstaller 'splunk-appinspect'. Aucun fichier à désinstaller n'a été trouvé." "La désinstallation de Sudo pip" n'a pas fonctionné "Impossible de désinstaller la configuration requise, splunk-appinspect, non installée". J'ai essayé de désinstaller pip, de supprimer le cache de pip, de rechercher le paquet sur mon disque dur, etc.

"Pip Show" m'a finalement conduit à la solution, le "Location:" pointant vers un répertoire, et renommer ce répertoire a entraîné la suppression du paquet dans la liste de pip. J'ai renommé le répertoire et il ne réapparaît pas dans la liste de pip. Je peux maintenant réinstaller mon paquet dans virtualenv.

0
mmacvicar

J'avais exécuté python setup.py install une fois dans PyCharm, il installait tous les packages dans mon environnement conda base. Plus tard, lorsque je veux supprimer tous ces paquets, pip uninstall ne fonctionne pas. Je devais les supprimer manuellement de /anaconda3/lib/python3.7/site-packages :(

Donc, je ne vois pas la raison pour laquelle ils utilisent setup.py au lieu d’écrire le fichier require.txt. Le fichier d'exigences peut être utilisé pour installer des packages dans un environnement virtuel et ne perturbera pas les packages python du système.

0
Yossarian42

Il peut être préférable de supprimer les fichiers associés en utilisant bash pour lire les commandes, comme suit:

Sudo python setup.py install --record files.txt
Sudo bash -c "cat files.txt | xargs rm -rf"
0
Mark Peng