Удаление пакета с "pip" также удаляет зависимые пакеты?
Когда вы используете pip
для установки пакета все необходимые пакеты также будут установлены вместе с ним (зависимости). Удаление этого пакета также удаляет зависимые пакеты?
10 ответов
Нет, он не удаляет пакеты зависимостей:
$ pip install specloud
$ pip freeze
фиговый листок ==0.6.1
== нос 1.1.2
Пиноккио == 0,3
specloud == 0.4.5
$ pip uninstall specloud
$ pip freeze
фиговый листок ==0.6.1
== нос 1.1.2
Пиноккио == 0,3
Как вы можете видеть, все пакеты все еще там, но не specloud
сам пакет
Вы можете установить и использовать утилиту pip-autoremove, чтобы удалить пакет и неиспользуемые зависимости.
# install pip-autoremove
pip install pip-autoremove
# remove "somepackage" plus its dependencies:
pip-autoremove somepackage -y
Я успешно удалил зависимости пакета, используя эту строку:
for dep in $(pip show somepackage | grep Requires | sed 's/Requires: //g; s/,//g') ; do pip uninstall -y $dep ; done
это сработало на пипе 1.5.4
Я нашел решение, хотя некоторым это может быть немного сложно.
1-й шаг (для python3 и linux):
pip3 install pip-autoremove
2 - й шаг:
cd /home/usernamegoeshere/.local/bin/
3-й шаг:
gedit /home/usernamegoeshere/.local/lib/python3.8/site-packages/pip_autoremove.py
и измените все pip (s) на pip34-й шаг:./pip-autoremove packagenamegoeshere
По крайней мере, у меня это сработало...
И для хорошей меры тоже. Рассмотрим сценарии, в которых зависимости пересекаются с другими установленными вами пакетами. Вам лучше замораживаться в файле require.txt при каждой новой установке и сравнивать предыдущие версии файла require.txt, чтобы вручную удалить зависимости.
Вы можете попробовать https://github.com/cls1991/pef. Он удалит пакет со всеми его зависимостями.
Если вы находитесь внутриvenv
среду в Linux, вы можете использовать:pip uninstall $(pip freeze) -y
, здесь это сработало как шарм.
В нем будут перечислены все установленные зависимости, он будет перебирать список и подтверждать удаление с помощью-y
параметр
Чтобы удалить зависимости определенного пакета в вашем проекте:
1. В новой папке (вне вашего проекта) создайте новый venv:
python3 -m venv env
2.Активируйте новый venv и установите в нем только тот пакет, который вы пытаетесь удалить, зависимости:
pip install YOUR-SPECIFIC-PACKAGE
3.Pip заморозьте ваши пакеты и назовите их примерно так: uninstall-dependents.txt:
pip freeze --> uninstall-dependencies.txt
4. Скопируйте список «uninstall-dependents.txt» в виртуальную среду, из которой вы пытаетесь удалить конкретный пакет, включая все его зависимости.
5. Вернитесь к исходному проекту (активируйте его среду, если он еще не активен) и используйте новый список в качестве руководства для удаления всего, что связано с удаляемым пакетом:
pip uninstall -y -r uninstall-dependencies.txt
Команда «-y» выполняет удаление, не запрашивая подтверждение удаления каждой отдельной зависимости.
6. Проверьте свой проект, все ли так, как вы хотите.
7. Не забудьте заморозить пакет после удаления пакета и его зависимостей:
pip freeze -r requirements.txt
Это должно удалить конкретный пакет и его зависимости, сохранив при этом другие пакеты в вашем проекте. Конечно, также существует вероятность, что у вас есть несколько пакетов с одинаковыми зависимостями, и в этом случае вы можете переустановить новый файл require.txt, чтобы настроить их заново.
Может быть, немного хакерски, но мне помогло.
Простое удаление файла pipx.x имя_модуля помогло мне на RHEL7 удалить пакет Python. Да, он также удалил все зависимости.
пример: pip3.6 удалить панды
Я только что нашел самый быстрый способ сделать это
pip uninstall -y (pip freeze)
Это удалит все зависимости
Если вы хотите быть уверены, что не удалите тот, который важен для вас
ты можешь попробовать это
pip freeze > ./python_uninstall_modules.txt
pip uninstall -r python_uninstall_modules.txt -y