Асимметрия
В части установки Conda запускается с неявным флагом --freeze-installed
, что упрощает установку, если все пакеты уже есть.
При удалении Conda не выполняет нет эквивалентного простого удаления. Вместо этого он попытается удалить запрошенный пакет, а также любые из его зависимостей, которые не были явно установлены или требуются другими пакетами. К сожалению, кажется, что sh это достигается путем попытки найти среду, которая состоит только из ранее запрошенных пакетов для env, и это означает, что все пакеты, имеющие заменяющие версии, подлежат обновлению.
Ваш конкретный случай усугубляется тем фактом, что вы установили из разных каналов (например, conda-forge ), но никогда явно не определяли эти приоритеты каналов в вашей конфигурации Conda (глобально или в env). Таким образом, большинство изменений включают в себя переключение на канальную версию пакетов по умолчанию .
Альтернативы
Если вы уверены, что больше ничего не изменилось, то вы можете используйте флаг --force-remove
.
Другой вариант, если это была последняя установленная вами версия, - это выполнить откат ревизии, но это также может привести к изменениям в drasti c. То есть, проверьте свою историю изменений:
conda list --revisions
И затем попытайтесь установить предпоследнюю. Я бы определенно dry запустил его первым:
conda install --revision <your_rev> --dry-run
Pip
Не используйте Pip, если вам это абсолютно не нужно, и определенно не в вашей базе окр. Как правило, использование Pip с Conda приводит к нестабильности (см. Использование Pip в среде Conda ). Кроме того, если вам нужно его использовать, не используйте sudo
или pip3
. Вместо этого, активируйте env и используйте просто pip install
.
Общая (Мнение) Рекомендация
Лично я обнаружил, что наиболее стабильный способ работы с Conda - это лечить все envs как неизменный . То есть избегайте использования conda (install|update|remove|uninstall)
команд. Единственное исключение из этого - при первом указании нового проекта.
Вместо ad ho c установки и удаления пакетов, напишите файл YAML и используйте его для создания нового env (conda env create -f my_env.yml
) всякий раз, когда вы будете sh редактировать свою среду. Если вам нужно добавить новый пакет в env, отредактируйте YAML и воссоздайте env с нуля.