Удаление пакета с "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
Другие вопросы по тегам