Простое руководство по управлению средами Conda

Из этой статьи вы узнаете

  • Потребность в средах Conda
  • Разница между средами Conda и виртуальными средами
  • Команды для управления средами Conda
  • Сохранение сред Conda от существующих сред Conda

Вы работаете над несколькими проектами, такими как анализ и визуализация данных, где вам нужны библиотеки matplotlib и seaborn, мультиклассовая классификация с использованием TensorFlow 1.14, а также Keras и другой проект, в котором вы хотите использовать модель BERT с использованием TensorFlow 2.0 для анализа настроений.

Рассмотрим другую ситуацию, когда вы завершили разработку своего проекта и хотите развернуть модель глубокого обучения на другом компьютере. Вы хотите убедиться, что все работает без сбоев.

Как с легкостью справиться с этими сценариями?

Вариант 1. Установите необходимые библиотеки на разные компьютеры, чтобы изолировать среду и управлять зависимостями или

Вариант 2. Создайте отдельные среды, изолирующие конфликты библиотек и управляющие зависимостями на одном компьютере. Кроме того, легко извлеките все зависимые библиотеки из файла для восстановления в другой системе.

Вариант 2 может быть реализован путем создания сред Conda или виртуальных сред на Python.

Что такое среда Conda?

  • Среда Conda - это специальный каталог, в который мы можем установить определенные библиотеки и их зависимости.
  • Среда Conda не зависит от языка. Вы можете управлять как Python, так и библиотеками и пакетами R.
  • Conda позволяет нам создавать, экспортировать, перечислять, удалять и обновлять среды с различными версиями библиотек или пакетов, установленных в них, изолируя их в разных средах. Таким образом, Conda - это не только менеджер пакетов, но и среда.
  • Conda использует решатель выполнимости (SAT) для отношений зависимости в среде. Решающая программа SAT проверяет, все ли необходимые зависимые библиотеки установлены в среде. Эта проверка требует дополнительного времени, но предотвращает создание неработающих сред.
  • Библиотеки Conda хранятся в виде двоичных файлов.
  • Conda использует разные каналы, в том числе удаленные, для загрузки пакетов. Каналы - это места, где хранятся пакеты.

Можно ли добиться того же с виртуальными средами?

Виртуальная среда также используется для управления пакетами python для разных проектов; однако между средами Conda и виртуальными средами мало различий.

  • Виртуальные среды созданы специально для Python и, следовательно, не зависят от языка.
  • Виртуальные среды зависят от базовой системы, установленной Python, тогда как среды Conda не зависят от базовой установки.
  • Пакеты Conda являются двоичными, тогда как библиотеки в виртуальных средах упакованы в виде колес или исходных дистрибутивов.

Как мы можем создавать среды Conda и управлять ими?

Список всех сред Conda

conda env list

Активная среда обозначается значком *

Создание новой среды Conda

conda create — name env_data_viz python=3.7

Создает новую среду с именем «env_data_viz» с базой как python 3.7.

Активация среды Conda

conda activate env_data_viz

Как только среда Conda активирована, подсказка меняется на вновь установленную среду Conda.

Активация выполняет две основные функции:

  • Добавляет записи в PATH для среды и
  • Запускает любые сценарии активации, которые может содержать среда.

Установить пакеты в среде Conda

conda install -n env_data_viz matplotlib seaborn

Установка matplotlib и seaborn в среду env_data_viz Conda

Список всех пакетов в среде Conda

conda list

Список всех пакетов и версий библиотек в текущей среде Conda.

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

conda list — revision

Вы также можете вернуться к предыдущей версии.

conda install — revision 0

Вы возвращаетесь к версии 0, которая не содержит matplotlib и seaborn, после того, как вы нажмете «y», чтобы подтвердить удаление пакетов.

При повторном просмотре ревизии вы увидите базовую ревизию без matplotlib и seaborn.

Деактивация текущей среды Conda

conda deactivate

Деактивирует текущую среду Conda и возвращается на базу

Создал новую среду Conda для мультиклассовой классификации env_multi_class_tf15 с базой как python 3.7, а затем установил TensorFlow 1.14 и деактивировал среду кондоминиума.

conda create — name env_multi_class_tf15 python=3.7
conda install tensorflow==1.14 keras
conda deactivate

Обновление env_multi_class_tf15 с помощью TensorFlow 1.15 из базы

conda install -n env_multi_class_tf15 tensorflow==1.15

Добавление каналов

Каналы Conda - это места, где хранятся пакеты. Когда мы устанавливаем пакет, команда Conda ищет стандартный набор каналов для загрузки пакетов.

Когда некоторые пакеты недоступны в пакетах по умолчанию, мы можем добавить каналы в среды Condo и загрузить пакеты.

Здесь мы устанавливаем PyTorch из канала conda-forge, который не является каналом по умолчанию.

conda install — channel conda-forge pytorch
conda list

Перечислив все пакеты в среде Conda, теперь вы можете увидеть, что некоторые из пакетов были установлены из канала «conda-forge».

Каждый раз, когда мы устанавливаем пакет в среде Conda, он ищет все каналы, перечисленные в местах в файле .condarc.

Вы можете добавить канал «conda-forge» в .condarc file, используя следующую команду

conda config — add channels conda-forge

Восстановление или перемещение сред Conda

Мы можем восстанавливать или перемещать среды Conda, используя несколько методов.

  • Клонировать
  • Составьте список с использованием списка кондоминиумов
  • Environment.yml с возможностью экспорта

Клонировать

Создает точную копию указанных сред Conda

conda create — name test_clone — clone env_multi_class_tf15

test_clone - это новая клонированная среда из исходной среды Conda env_multi_class_tf15

Список спецификаций

Воспроизводит среду Conda в той же операционной системе

Список спецификаций может быть создан с явной опцией или без нее, как показано ниже.

conda list >spec_list.txt
#or
conda list — explicit >spec_list_exp.txt

В явном файле спецификации указана платформа, на которой была создана среда. Это платформа, на которой, как известно, работает этот файл спецификации.

Чтобы воссоздать среду Conda из явного файла спецификации.

conda create — name test_spec — file spec_list_exp.txt

Экспорт сред Conda с помощью файла environment.yml

Когда мы хотим поделиться своей средой проекта с другими членами команды, мы можем использовать опцию экспорта с файлом .yml для извлечения всей информации, необходимой для создания среды Conda. Файл environment.yml не зависит от операционной системы и отформатирован с использованием YAML.

environment.yml перечисляет все имена пакетов, и Конда предоставляет возможность построить среду на основе имени пакета. Команда экспорта также включает пакеты, установленные с помощью pip.

Создание файла yaml из существующей среды Conda

conda env export  --file environment.yml

Результатом будет файл environment.yml.

Воссоздание среды Conda из файла environment.yml. Если среда уже существует, вы получите сообщение об ошибке.

CondaValueError: префикс уже существует

conda env create -f environment.yml

Удаление среды Conda

Вы можете удалить среду Conda, используя следующую команду.

conda env remove — name test_clone — all

Перечислив среды Conda, вы увидите, что среда тестового клона больше не существует.

Заключение:

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

Использованная литература:

Https://docs.conda.io/projects/conda/en/4.6.0/_downloads/52a95608c49671267e40c689e0bc00ca/conda-cheatsheet.pdf

Https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html





Https://www.anaconda.com/blog/moving-conda-environments