Question python setup.py désinstallation


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

Comment puis-je le désinstaller?


642
2017-10-11 09:06


origine


Réponses:


Vous devez supprimer tous les fichiers manuellement et également annuler tout autre travail effectué manuellement par l'installation.

Si vous ne connaissez pas la liste de tous les fichiers, vous pouvez le réinstaller avec le --record option, et jetez un oeil à la liste que cela produit.

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 effectuer 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}

Ensuite, supprimez également le répertoire contenant, par ex. /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/my_module-0.1.egg/ sur macOS. Il n'a pas de fichiers, mais Python importera toujours un module vide:

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

Une fois supprimé, Python montre:

>>> import my_module
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'my_module'

823
2017-10-11 09:12



Pour moi, ce qui suit fonctionne principalement:

avoir pip installé, par exemple:

$ easy_install pip

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

$ pip freeze

Cela doit énumérer les noms de tous les paquets que vous avez installés (et qui ont été détectés par pip). Le nom peut être long, puis utiliser juste le nom du paquet affiché au et après #egg=. Vous pouvez également dans la plupart des cas ignorer la partie de la version (tout ce qui suit == ou -).

Puis désinstallez le paquet:

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

S'il demande confirmation de retirer le paquet, alors vous êtes chanceux et il sera supprimé.

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

Voici un exemple réel de mon test local avec le package nommé ttr.rdstmc sur 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://vlcinsky@bitbucket.org/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

Modifier 2015-05-20

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

Installez pip en python 2.7.9 et python 3.4

Les versions récentes de python sont livrées avec un paquet ensurepip permettant d'installer pip même hors ligne:

$ python -m ensurepip --upgrade

Sur certains systèmes (comme Debian Jessie), ceci n'est pas disponible (pour empêcher l'installation du système Python).

En utilisant grep ou find

Les exemples ci-dessus supposent, vous avez grep installée. J'avais (au moment où j'avais MS Windows sur ma machine) installé un ensemble d'utilitaires Linux (y compris grep). Vous pouvez également utiliser MS Windows natif find ou ignorez simplement ce filtrage et trouvez le nom dans une liste un peu plus longue de paquets python détectés.


198
2017-10-09 10:19



La réponse # 1 a des problèmes:

  • Ne fonctionne pas sur mac.
  • Si un fichier comportant des espaces ou d'autres éléments spéciaux est installé caractères, le xargs la commande échouera et supprimera fichiers / répertoires qui correspondent aux mots individuels.
  • la -r dans rm -rf est inutile et au pire pourrait supprimer les choses que vous Je ne veux pas.

Au lieu de cela, pour unix:

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

Il y a aussi des problèmes insolubles avec la désinstallation setup.py installer qui ne vous dérange pas dans un cas typique. Pour une réponse plus complète, voir cette page wiki:

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


64
2017-08-08 17:34



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 voulez désinstaller, vous pouvez simplement:

sudo rm $(cat files.txt)

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


27
2017-10-28 12:00



Maintenant python vous donne le choix d'installer pip pendant l'installation (je suis sur Windows, et au moins python le fait pour Windows!). Considérant que vous aviez choisi d'installer pip lors de l'installation de python (vous n'avez pas à choisir parce que c'est par défaut), pip est déjà installé pour vous. Ensuite, tapez pip dans l'invite de commande, vous devriez voir une aide venir. 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

pour désinstaller tout paquet que vous ne voulez plus. Lire la suite ici (documentation de pip).


11
2017-09-03 17:44



Le moyen paresseux: simplement désinstaller à partir du menu d'installation de Windows (si vous utilisez Windows), ou à partir de la commande rpm, à condition de le réinstaller d'abord après avoir créé un paquet de distribution.

Par exemple,

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

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


8
2017-10-11 09:13



Accédez à votre répertoire de packages python et supprimez votre fichier .egg, par exemple.: En python 2.5 (ubuntu): /usr/lib/python2.5/site-packages/

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


5
2017-10-11 09:13



Probablement vous pouvez le faire comme une 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

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

3) De là, vous pouvez supprimer les paquets et les fichiers d'oeufs en python

[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
2017-12-26 06:44



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 est disponible dans une variable 'METADATA':

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

3
2017-10-25 03:57