Jaki jest najprostszy sposób na usunięcie wszystkich pakietów zainstalowanych przez pip?

Próbuję naprawić jedną z moich wirtualnych bibliotek-chciałbym zresetować wszystkie zainstalowane biblioteki z powrotem do tych, które pasują do produkcji.

Czy istnieje szybki i łatwy sposób, aby to zrobić z pip?

 732
Author: Underoos, 2012-06-28

26 answers

Znalazłem ten fragment jako alternatywne rozwiązanie. Jest to bardziej wdzięczne usuwanie bibliotek niż przerabianie virtualenv:

pip freeze | xargs pip uninstall -y

Jeśli masz pakiety zainstalowane przez VCS, musisz wykluczyć te linie i usunąć pakiety ręcznie (z komentarzy poniżej):

pip freeze | grep -v "^-e" | xargs pip uninstall -y
 1074
Author: blueberryfields,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-13 14:08:43

To będzie działać na wszystkich systemach Mac, Windows i Linux. Aby uzyskać listę wszystkich pakietów pip w wymaganiach.plik txt (Uwaga: spowoduje to zastąpienie wymagań.txt jeśli istnieje, utworzy nowy, również jeśli nie chcesz zastępować starych wymagań.txt następnie podaj inną nazwę pliku we wszystkich poniższych wymaganiach.txt).

pip freeze > requirements.txt

Teraz usunąć jeden po drugim

pip uninstall -r requirements.txt

Jeśli chcemy usunąć wszystkie naraz to

pip uninstall -r requirements.txt -y

Jeśli pracujesz nad istniejący projekt, który ma Plik requirements.txt i twoje środowisko się rozeszło, po prostu zamień requirements.txt z powyższych przykładów na toberemoved.txt. Następnie, po wykonaniu powyższych kroków, możesz użyć requirements.txt, Aby zaktualizować swoje czyste środowisko.

I dla pojedynczego polecenia bez tworzenia żadnego pliku (jak sugerował @joeb).

pip uninstall -y -r <(pip freeze)
 446
Author: Harshad Kavathiya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-04-22 15:44:00

To działa z najnowszymi. Myślę, że jest to najkrótszy i najbardziej deklaratywny sposób, aby to zrobić.

virtualenv --clear MYENV

Ale zazwyczaj po prostu usuwam i odtwarzam virtualenv, ponieważ zasady niezmienności!

 127
Author: Robert Moskal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-01-03 17:27:22

Chciałem wynieść tę odpowiedź z sekcji komentarzy, ponieważ jest to jedno z najbardziej eleganckich rozwiązań w wątku. Pełne uznanie za tę odpowiedź należy do @ joeb .

pip uninstall -y -r <(pip freeze)

Zadziałało to świetnie dla mnie w przypadku użycia wyczyszczenia folderu pakietów użytkownika poza kontekstem virtualenv, którego wiele z powyższych odpowiedzi nie obsługuje.

Edit: wie ktoś jak to polecenie działa w Makefile?

Bonus: bash alias

Dodaję to do mojego profilu bash dla wygody:

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

Następnie uruchom:

pipuninstallall

Alternatywa dla pipenv

Jeśli przypadkiem używasz pipenv możesz po prostu uruchomić:

pipenv uninstall --all
 101
Author: Taylor Edmiston,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-08 13:08:29

Inne odpowiedzi, które używają pip list lub pip freeze musi zawierać --local w przeciwnym razie odinstaluje również pakiety, które znajdują się w wspólnych przestrzeniach nazw.

Oto fragment, z którego regularnie korzystam

 pip freeze --local | xargs pip uninstall -y

Ref: pip freeze --help

 60
Author: nehem,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-06-19 10:49:01

Metoda 1 (z pip freeze)

pip freeze | xargs pip uninstall -y

Metoda 2 (z pip list)

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

Metoda 3 (z virtualenv)

virtualenv --clear MYENV
 42
Author: Suriyaa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-09 02:14:58

W systemie Windows jeśli twoja {[2] } jest poprawnie skonfigurowana, możesz użyć:

pip freeze > unins && pip uninstall -y -r unins && del unins
Podobnie powinno być w przypadku systemów uniksopodobnych:]}
pip freeze > unins && pip uninstall -y -r unins && rm unins

Tylko ostrzeżenie, że nie jest to całkowicie solidne, ponieważ możesz napotkać problemy takie jak "File not found", ale może to działać w niektórych przypadkach]}

EDIT: dla jasności: unins jest arbitralnym plikiem, który ma wypisane do niego dane podczas wykonywania tego polecenia: pip freeze > unins

Ten plik, który został napisany z kolei, jest następnie używany do odinstalowania wyżej wymienione Pakiety za dorozumianą zgodą / uprzednią zgodą przez pip uninstall -y -r unins

Plik jest ostatecznie usuwany po zakończeniu.

 23
Author: Richard Kenneth Niescior,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-04 23:06:01

Udało mi się to, wykonując następujące czynności:

Utwórz plik wymagań o nazwie reqs.txt z aktualnie zainstalowaną listą pakietów

pip freeze > reqs.txt

Następnie Odinstaluj wszystkie pakiety z reqs .txt

pip uninstall \
   -y # remove the package with prompting for confirmation
   -r reqs.txt

Podoba mi się ta metoda, ponieważ zawsze masz plik wymagań pip, do którego możesz wrócić, jeśli popełnisz błąd. Jest również powtarzalny.

 20
Author: Prime By Design,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-18 10:28:34

Najszybszym sposobem jest całkowite przerobienie virtualenv. Zakładam, że masz jakieś wymagania.plik txt, który pasuje do produkcji, jeśli nie:

# On production:
pip freeze > reqs.txt

# On your machine:
rm $VIRTUALENV_DIRECTORY
mkdir $VIRTUALENV_DIRECTORY
pip install -r reqs.txt
 18
Author: Ned Batchelder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-02-11 16:07:59

Korzystanie z funkcji virtualenvwrapper :

wipeenv

Zobacz dokumentacja wipeenv

 15
Author: zesk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-22 20:26:16

Najpierw dodaj cały pakiet do requirements.txt

pip freeze > requirements.txt

Następnie usuń wszystkie

pip uninstall -y -r requirements.txt 
 15
Author: shafik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-01-08 10:03:21

Używam opcji --user, aby odinstalować wszystkie pakiety zainstalowane na Stronie Użytkownika.

pip3 freeze --user | xargs pip3 uninstall -y
 11
Author: Dean,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-08-09 22:52:09

Dla użytkowników Windows, To jest to, co używam na Windows PowerShell

 pip uninstall -y (pip freeze)
 10
Author: benwrk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-23 12:57:37

To stare pytanie, które Wiem, ale natknąłem się na nie, więc na przyszłość możesz to zrobić:

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

-r, --request file

Odinstaluj wszystkie pakiety wymienione w podanym pliku wymagań. Ta opcja może być używana wielokrotnie.

Z dokumentacji pip w wersji 8.1

 9
Author: Craicerjack,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-23 14:33:09

(dodając to jako odpowiedź, ponieważ nie mam wystarczającej reputacji, aby skomentować odpowiedź @ blueberryfields)

@blueberryfields odpowiedź działa dobrze, ale nie działa, jeśli nie ma pakietu do odinstalowania (co może być problemem, jeśli ta "Odinstaluj wszystko" jest częścią skryptu lub pliku makefile). Można to rozwiązać za pomocą xargs -r Podczas używania wersji xargs GNU:

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

From man xargs:

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

Jeśli standardowe wejście nie zawiera żadnych nonblanks, nie uruchamiaj komendy. Normalnie komenda jest uruchamiana raz, nawet jeśli tam nie ma wejścia. Ta opcja jest rozszerzeniem GNU.

 6
Author: Thibaut Dubernet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-07-05 11:24:03
pip3 freeze --local | xargs pip3 uninstall -y

Może być tak, że trzeba uruchomić tę komendę kilka razy, aby uzyskać pustą pip3 freeze --local.

 6
Author: obotezat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-10-17 18:52:06

To był dla mnie najprostszy sposób na odinstalowanie wszystkich pakietów Pythona.

from pip import get_installed_distributions
from os import system
for i in get_installed_distributions():
    system("pip3 uninstall {} -y -q".format(i.key))
 3
Author: Anonymous 138,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-29 10:15:35

Obsługa wielu platform tylko za pomocą 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
Author: Samuel Marks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-21 03:45:48

To jest polecenie, które działa dla mnie:

pip list | awk '{print $1}' | xargs pip uninstall -y
 2
Author: Fei Xie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-02 22:12:19

The easy SOLID way cross-platform a praca w pipenv też jest:

pip freeze 
pip uninstall -r requirement

By pipenv:

pipenv run pip freeze 
pipenv run pip uninstall -r requirement

Ale nie zaktualizuje piplock ani pipfile, więc bądź świadomy

 2
Author: Mahdi Hamzeh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-10-11 18:10:11

If you ' re running virtualenv:

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

Na przykład, jeśli twój virtualenv to /Users/you/.virtualenvs/projectx, wtedy uruchomisz:

virtualenv --clear /Users/you/.virtualenvs/projectx
Jeśli nie wiesz, gdzie znajduje się twój wirtualny env, możesz uruchomić which python z aktywowanego Wirtualnego env, aby uzyskać ścieżkę
 1
Author: punkrockpolly,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-27 21:57:56

W powłoce poleceń systemu Windows polecenie pip freeze | xargs pip uninstall -y nie będzie działać. Więc dla tych z was korzystających z systemu Windows, wymyśliłem alternatywny sposób, aby to zrobić.

  1. skopiuj wszystkie nazwy zainstalowanych pakietów pip z polecenia pip freeze do .plik txt.
  2. Następnie, przejdź do lokalizacji .txt plik i uruchom polecenie pip uninstall -r *textfile.txt*
 1
Author: Sushant Chaudhary,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-26 06:39:02

Jeśli używasz pew, możesz użyć wipeenv komendy:

pew wipeenv [env]

 1
Author: Mohammad Banisaeid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-01-11 10:57:28

W moim przypadku przypadkowo zainstalowałem kilka pakietów na całym świecie używając Homebrew zainstalowanego pip na macOS. Najprostszym sposobem na przywrócenie domyślnych pakietów było proste:

$ brew reinstall python

Lub, jeśli używałeś pip3:

$ brew reinstall python3
 0
Author: Radon Rosborough,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-18 21:28:54

Chciałem po prostu usunąć pakiety zainstalowane przez projekt, a nie inne pakiety, które zainstalowałem (takie jak neovim, mypy i pudb które używam dla lokalnego dev, ale nie są zawarte w wymaganiach aplikacji). Więc zrobiłem:

cat requirements.txt| sed 's/=.*//g' | xargs pip uninstall -y

Co mi się udało.
 0
Author: verboze,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2021-01-20 23:39:58

Pip nie może wiedzieć, jakie pakiety zostały zainstalowane przez niego i jakie pakiety zostały zainstalowane przez menedżera pakietów systemu. W tym celu musisz zrobić coś takiego

Dla dystrybucji opartych na rpm (zastąp python2. 7 swoją wersją Pythona, z którą zainstalowałeś pip):

find /usr/lib/python2.7/ |while read f; do
  if ! rpm -qf "$f" &> /dev/null; then
    echo "$f"
  fi
done |xargs rm -fr

Dla dystrybucji opartej na deb:

find /usr/lib/python2.7/ |while read f; do
  if ! dpkg-query -S "$f" &> /dev/null; then
    echo "$f"
  fi
done |xargs rm -fr

Następnie wyczyść puste katalogi, które pozostały:

find /usr/lib/python2.7 -type d -empty |xargs rm -fr

Znalazłem najlepszą odpowiedź bardzo mylące, ponieważ usunie wszystkie (Większość?) python pakiety z twojej dystrybucji i prawdopodobnie zostawią cię z zepsutym systemem.

 -1
Author: glenda,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-04 12:47:51