Conda связывает все пакеты с папкой pkgs
, которая используется всеми envs и никак не связана с base .Всякий раз, когда какой-либо env устанавливает или обновляет пакеты, они идут туда, и нет никаких явных попыток получить исходный код из существующих пакетов - если решатель зависимостей преобразуется в кэшированный пакет, он будет использовать его.В настоящее время в нет механизма для поддержки синхронизации пакетов между envs , поэтому для его достижения необходимо разработать рабочий процесс.
Потенциальный рабочий процесс
Можно было бы вТеория, используйте Enda клонирование Конда , чтобы максимизировать синхронизацию версии пакета.Для этого вы можете концептуально организовать ваши envs по трем категориям:
- base env : используется только для базовой инфраструктуры, например,
conda
, jupyter
, git
и т. д. Это вы можете свободно обновлять всякий раз, когда вам нужно новое программное обеспечение для командной строки или вам нужно conda update conda
.Он должен почти не перекрываться другими envs. - template env : централизует общие наборы пакетов, обычно сгруппированные по ограничениям версий.Например, можно использовать
py27-tmpl
, py36-tmpl
и py37-tmpl
для разных версий Python, которые могут потребоваться для разных проектов.Здесь вы должны установить наиболее распространенное подмножество пакетов, которое вам нужно для разных проектов.Основная цель шаблона env заключалась бы в создании ... - env проекта : связанного с конкретным проектом разработки и первоначально полученного как клон шаблона env.Большая часть основного программного обеспечения в них будет исходить из шаблона, а затем здесь будет установлено дополнительное программное обеспечение.Как только вы запускаете один проект, вы сохраняете его относительно фиксированным, чтобы поддерживать стабильность разработки.
Такая структура максимизирует повторное использование существующих версий пакета.Можно также использовать закрепление пакета , чтобы гарантировать, что будущие решения зависимостей не будут обновлены вне пакетов шаблонов.Однако это может ограничить установку некоторых последних версий для других пакетов.
К сожалению, вы все равно столкнетесь с проблемой синхронизации, аналогичной интуитивно понятной: хотя вы могли бы обновить эти envs шаблона перед созданием новых клонов, которые выигралине обновляйте те, которые были получены ранее.Но для проектов envs, я думаю, что лучшей практикой будет не манипулировать ими, когда вы начнете работать.Если вас беспокоит пространство, ничто не заменит завершение ваших модульных проектов, а затем архивирование и удаление envs проекта после использования.Это, и иногда работает conda clean
.