pip uninstall удаляет файлы выбранного дистрибутива по установленным метаданным. Его зависимости обычно остаются, поскольку другие пакеты могут использовать те же библиотеки. Автоматического каскада нет.

Удалите конкретный проект

Запускайте команду тем же интерпретатором, который использует приложение, и прочитайте список файлов до подтверждения, особенно если на машине несколько виртуальных окружений.

python -m pip uninstall package_name

Проверьте оставшееся окружение

После удаления pip check найдет неудовлетворенные требования, а show Required-by подскажет, какие установленные проекты еще ссылаются на кандидата для ручной очистки.

python -m pip check
python -m pip show dependency_name

Чистый venv надежнее уборки

При большой смене зависимостей быстрее создать новое окружение из авторитетного файла и прогнать тесты, чем угадывать назначение десятков транзитивных пакетов по старому freeze.

Не удаляйте общую библиотеку только потому, что ее имя отсутствует в коде проекта: импорт мог прийти через пакет, который остается в рабочем окружении.

Для осмотра используйте сравнение pip list, show и freeze. Ограничения удаления перечислены в документации pip uninstall.