Почему anaconda снова загружает пакеты, которые у меня уже есть, при создании новой среды?

#anaconda #conda

#anaconda #conda

Вопрос:

Недавно я использовал anaconda3 для нескольких проектов, и каждый раз, когда я создаю виртуальную среду для проекта, кажется, что anaconda повторно загружает одни и те же пакеты (например, pytorch).

Я что-то неправильно настроил или такое поведение нормально?

для упрощения я изучаю курс Stanford CS224n и для заданий, которые я использую:

 conda env create --file env.yml
  

Где env.yml имеет вид:

 name: local_nmt
channels:
  - pytorch
  - defaults
dependencies:
  - python=3.5
  - numpy
  - scipy
  - tqdm
  - docopt
  - pytorch
  - nltk
  - torchvision
  

Я не смог найти объяснение в документации anaconda.
Заранее спасибо!

Комментарии:

1. Какой результат вы получаете при запуске conda env create --file env.yml ? Conda не будет загружать пакеты, если они уже доступны в локальном кэше пакетов.

Ответ №1:

Если указано только имя пакета или версия, то Conda по умолчанию будет использовать последние версии, которые соответствуют ограничениям. Следовательно, любые пакеты, в которых доступны более новые сборки, приведут к загрузке.

Автономный режим

Существует --offline флаг, позволяющий использовать только то, что доступно в кэше пакетов.

Указание сборок

Однако это не всегда может быть осуществимо (например, вы добавили несколько некэшированных пакетов в YAML). В этом случае можно дополнительно указать сборку (которая служит уникальным идентификатором), чтобы соответствовать уже кэшированным версиям.

Не уверен, что это самый чистый способ сделать это, но одним из подходов было бы сначала экспортировать YAML из существующих сред, где существуют пакеты (например, conda export env > env.yaml ), а затем использовать спецификации там, чтобы заполнить детали для среды YAML, которую вы пытаетесь создать.

Клонирование

Вероятно, также стоит упомянуть, что можно также клонировать существующие среды:

 conda create --clone old_env --name new_env