Как удалить все пакеты, установленные через pip?
Как удалить все пакеты, установленные с помощью pip, из моей текущей активированной виртуальной среды?
5 ответ(ов)
Вот вариант решения, который я нашёл как альтернативу. Это более изящный способ удаления библиотек, чем полное пересоздание virtualenv:
pip freeze | xargs pip uninstall -y
Если у вас установлены пакеты через VCS, нужно исключить эти строки и удалить пакеты вручную (поднято из комментариев ниже):
pip freeze --exclude-editable | xargs pip uninstall -y
Если у вас есть пакеты, установленные непосредственно из GitHub или GitLab, они будут иметь символ @
. Например:
django @ git+https://github.com/django.git@<sha>
Вы можете добавить cut -d "@" -f1
, чтобы получить только имя пакета, необходимое для его удаления.
pip freeze | cut -d "@" -f1 | xargs pip uninstall -y
Это работает с последней версией. Я думаю, что это самый короткий и декларативный способ сделать это.
virtualenv --clear MYENV
Но почему бы просто не удалить и не создать виртуальное окружение заново?
Правила неизменности. Кроме того, трудно запомнить все эти команды с пайпами и грепами, которые используются в других решениях.
Я решил эту задачу следующим образом:
- Сначала создайте файл зависимостей, назвав его
reqs.txt
, с текущим списком установленных пакетов:
pip freeze > reqs.txt
- Затем удалите все пакеты из
reqs.txt
:
# -y означает, что пакет будет удалён без запроса подтверждения
pip uninstall -y -r reqs.txt
Мне нравится этот метод, так как у вас всегда есть файл зависимостей pip, на который можно сослаться в случае ошибки. Это также воспроизводимо и кроссплатформенно (Windows, Linux, MacOS).
Другие ответы, в которых используются команды pip list
или pip freeze
, обязательно должны включать флаг --local
, иначе они также удалят пакеты, находящиеся в общем пространстве имен.
Вот фрагмент кода, который я использую регулярно:
pip freeze --local | xargs pip uninstall -y
Ссылка: pip freeze --help
Метод 1 (с использованием pip freeze
)
Для удаления всех установленных пакетов в текущем окружении можно использовать следующую команду:
pip freeze | xargs pip uninstall -y
Эта команда получает список всех установленных пакетов с помощью pip freeze
, а затем передает этот список команде pip uninstall
для удаления каждого пакета без запроса подтверждения (-y
).
Метод 2 (с использованием pip list
)
Вы также можете использовать команду pip list
для удаления пакетов следующим образом:
pip list | awk '{print $1}' | xargs pip uninstall -y
Здесь pip list
выводит список всех пакетов, а awk '{print $1}'
извлекает только имена пакетов. Полученный список передается команде pip uninstall
для удаления.
Метод 3 (с использованием virtualenv
)
Если вы хотите очистить виртуальное окружение, тогда можно воспользоваться следующей командой:
virtualenv --clear MYENV
Здесь MYENV
— это название вашего виртуального окружения. Эта команда сбросит и очистит все установленные пакеты в указанном виртуальном окружении, оставляя его "чистым".
Как обновить pip изнутри виртуального окружения?
Как выйти/деактивировать виртуальное окружение Python?
В чем разница между venv, pyvenv, pyenv, virtualenv, virtualenvwrapper, pipenv и другими?
Узнать, какая версия пакета установлена с помощью pip
Как заставить pip переустановить текущую версию?