web-dev-qa-db-fra.com

Quel est le moyen le plus simple de supprimer tous les packages installés par pip?

J'essaie de réparer l'un de mes virtualenvs - j'aimerais réinitialiser toutes les bibliothèques installées à celles qui correspondent à la production.

Y at-il un moyen rapide et facile de faire cela avec pip?

412
blueberryfields

J'ai trouvé cet extrait comme solution alternative. C'est une suppression plus gracieuse des bibliothèques que de refaire le virtualenv:

pip freeze | xargs pip uninstall -y

Si des packages sont installés via VCS, vous devez exclure ces lignes et les supprimer manuellement (à partir des commentaires ci-dessous):

pip freeze | grep -v "^-e" | xargs pip uninstall -y
652
blueberryfields

Cela fonctionnera pour tous les systèmes Mac, Windows et Linux . Pour obtenir la liste de tous les packages pip dans le fichier exigences.txt (Remarque: cette option remplacera le fichier Requirements.txt, s'il existe, il en créera un nouveau.)

pip freeze > requirements.txt

Maintenant pour enlever un par un

pip uninstall -r requirements.txt

Si nous voulons tout supprimer en même temps, alors 

pip uninstall -r requirements.txt -y

Si vous travaillez sur un projet existant contenant un fichier requirements.txt et que votre environnement a divergé, remplacez simplement requirements.txt dans les exemples ci-dessus par toberemoved.txt. Ensuite, une fois que vous avez suivi les étapes ci-dessus, vous pouvez utiliser le requirements.txt pour mettre à jour votre environnement désormais propre.

Et pour une seule commande sans créer de fichier (comme suggéré par joeb).

pip uninstall -y -r <(pip freeze)
177
Harshad Kavathiya

Je pense que cela fonctionne avec le dernier 

virtualenv --clear MYENV
89
Robert Moskal

Je voulais élever cette réponse dans une section de commentaire car c'est l'une des solutions les plus élégantes du sujet. Le crédit total pour cette réponse va à @joeb .

pip uninstall -y -r <(pip freeze)

Cela fonctionnait très bien pour le cas d'utilisation de la suppression de mon dossier de packages utilisateur en dehors du contexte d'une virtualenv que la plupart des réponses ci-dessus ne gèrent pas.

Edit: Quelqu'un sait comment faire fonctionner cette commande dans un Makefile?

Bonus: un alias bash

J'ajoute ceci à mon profil bash pour plus de commodité:

alias pipuninstallall="pip uninstall -y -r <(pip freeze)"

Puis lancez:

pipuninstallall

Alternative pour pipenv

Si vous utilisez pipenv vous pouvez simplement lancer:

pipenv uninstall --all
55
Taylor Edmiston

Méthode 1 (avec pip freeze)

pip freeze | xargs pip uninstall -y

Méthode 2 (avec pip list)

pip list | awk '{print $1}' | xargs pip uninstall -y

Méthode 3 (avec virtualenv)

virtualenv --clear MYENV
38
Suriyaa

Les autres réponses qui utilisent pip list ou pip freeze doivent inclure --localsinon, cela désinstallera également les packages qui se trouvent dans les espaces de noms communs. 

Alors voici les extraits que j'utilise régulièrement

 pip freeze --local | xargs pip uninstall -y

ou

 pip list --local | py -x "print(x.split()[0])" | xargs pip uninstall -y

En savoir plus sur ce problème en émettant pip freeze --help

26
nehemiah

Le moyen le plus rapide est de refaire complètement le virtualenv. Je suppose que vous avez un fichier exigences.txt correspondant à la production, sinon

# On production:
pip freeze > reqs.txt

# On your machine:
rm $VIRTUALENV_DIRECTORY
mkdir $VIRTUALENV_DIRECTORY
pip install -r reqs.txt
16
Ned Batchelder

Sous Windows, si votre path est configurée correctement, vous pouvez utiliser:

pip freeze > unins && pip uninstall -y -r unins && del unins

Il devrait en être de même pour les systèmes de type Unix:

pip freeze > unins && pip uninstall -y -r unins && rm unins

Juste un avertissement que ce n'est pas complètement solide car vous pouvez rencontrer des problèmes tels que «Fichier non trouvé» mais cela peut néanmoins fonctionner dans certains cas 

EDIT: Pour plus de clarté: unins est un fichier arbitraire contenant des données lorsque cette commande est exécutée: pip freeze > unins

Ce fichier qu'il a ensuite écrit est ensuite utilisé pour désinstaller les packages susmentionnés avec consentement implicite/approbation préalable via pip uninstall -y -r unins

Le fichier est finalement supprimé à la fin.

15

Utilisation de virtualenvwrapper function:

wipeenv

Voir la documentation wipeenv

12
zesk

Pour les utilisateurs de Windows, voici ce que j’utilise sur Windows PowerShell

 pip uninstall -y (pip freeze)
6
benwrk

C'est une vieille question que je connais, mais je l'ai trébuché pour que vous puissiez maintenant vous y reporter:

pip uninstall [options] <package> ...
pip uninstall [options] -r <requirements file> ...

-r, --requirement file 

Désinstallez tous les packages répertoriés dans le fichier de configuration requis. Cette option peut être utilisée plusieurs fois.

de la documentation pip version 8.1

4
Craicerjack

(en ajoutant ceci comme réponse, car je n'ai pas assez de réputation pour commenter la réponse de @blueberryfields)

La réponse de @blueberryfields fonctionne bien, mais échoue s'il n'y a pas de paquet à désinstaller (ce qui peut poser problème si ce "désinstaller tout" fait partie d'un script ou d'un fichier makefile). Ceci peut être résolu avec xargs -r lorsque vous utilisez la version GNU de xargs:

pip freeze --exclude-editable | xargs -r pip uninstall -y

de man xargs:

-r, --no-run-if-empty

Si l'entrée standard ne contient pas de caractères non vides, n'exécutez pas la commande. Normalement, la commande est exécutée une fois, même s'il n'y a pas d'entrée. Cette option est une extension GNU.

2
Thibaut Dubernet

Pour moi, c’était le moyen le plus simple de désinstaller tous les packages Python.

from pip import get_installed_distributions
from os import system
for i in get_installed_distributions():
    system("pip3 uninstall {} -y -q".format(i.key))
2
Anonymous 138

Prise en charge multiplateforme en utilisant uniquement pip:

#!/usr/bin/env python

from sys import stderr
from pip.commands.uninstall import UninstallCommand
from pip import get_installed_distributions

pip_uninstall = UninstallCommand()
options, args = pip_uninstall.parse_args([
    package.project_name
    for package in
    get_installed_distributions()
    if not package.location.endswith('dist-packages')
])

options.yes = True  # Don't confirm before uninstall
# set `options.require_venv` to True for virtualenv restriction

try:
    print pip_uninstall.run(options, args)
except OSError as e:
    if e.errno != 13:
        raise e
    print >> stderr, "You lack permissions to uninstall this package.
                      Perhaps run with sudo? Exiting."
    exit(13)
# Plenty of other exceptions can be thrown, e.g.: `InstallationError`
# handle them if you want to.
2
Samuel Marks

C'est la commande qui fonctionne pour moi:

pip list | awk '{print $1}' | xargs pip uninstall -y
2
Fei Xie

Si vous utilisez pew, vous pouvez utiliser la commande wipeenv :

pew wipeenv [env]

1
Mohammad Banisaeid

Dans Command Shell de Windows, la commande pip freeze | xargs pip uninstall -y ne fonctionnera pas. Donc, pour ceux qui utilisent Windows, j'ai trouvé un moyen alternatif de le faire.

  1. Copiez tous les noms des packages installés de pip à partir de la commande pip freeze dans un fichier .txt .
  2. Ensuite, allez dans l’emplacement de votre fichier .txt et lancez la commande pip uninstall -r *textfile.txt*
1
Sushant Chaudhary

Si vous utilisez virtualenv:

virtualenv --clear </path/to/your/virtualenv>

par exemple, si votre virtualenv est /Users/you/.virtualenvs/projectx, vous exécuterez: 

virtualenv --clear /Users/you/.virtualenvs/projectx

si vous ne savez pas où se trouve votre env virtuel, vous pouvez exécuter which python depuis un env virtuel activé pour obtenir le chemin.

1
punkrockpolly

Dans mon cas, j'avais accidentellement installé un certain nombre de paquets dans le monde en utilisant une pip installée sur Homebrew sur macOS. Le moyen le plus simple de revenir aux packages par défaut était simple:

$ brew reinstall python

Ou, si vous utilisiez pip3:

$ brew reinstall python3
1
Radon Rosborough

Tout d'abord, ajoutez tous les paquets à requirements.txt

pip freeze > requirements.txt

Puis retirez tout

pip uninstall -y -r requirements.txt 
0
Shafikur Rahman