J'ai installé un paquet python avec python setup.py install
.
Comment puis-je le désinstaller?
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'
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
Tout ce qui est écrit ci-dessus s'applique toujours, de toute façon, de petites modifications sont disponibles maintenant.
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).
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.
La réponse n ° 1 a des problèmes:
xargs
échouera et supprimera tous les fichiers/répertoires -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:
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.
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) .
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).
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/
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 :)
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']")
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>
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é.
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.
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.
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"