Должна ли среда Conda (базовая) быть в курсе? - PullRequest
2 голосов
/ 21 мая 2019

Я с радостью использую Conda через miniconda для управления средами Python.

После установки я оставляю среду base в одиночестве и создаю новуюсреда для новых проектов.Затем я conda env update эти среды по мере необходимости.Однако я не уверен, что это правильный подход.

Должна ли среда base быть conda env update ed до создания новых сред?

I думаю этобудет поддерживать более низкое использование диска, так как, возможно, я неправильно понимаю, что Conda связывает пакеты со средой base при создании новых сред, если пакет и зависимости точно совпадают.

Хотя ... это мало что значитсмысл, поскольку они могли легко выйти из синхронизации.Может быть, это просто экономит полосу пропускания, поскольку соответствующие пакеты можно копировать, а не загружать?

Если у каждого проекта есть своя собственная среда, имеет ли значение, если среда base обновляется?

Ответы [ 2 ]

4 голосов
/ 21 мая 2019

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.

0 голосов
/ 21 мая 2019

Вы, вероятно, должны использовать

conda update conda (по умолчанию)

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

...