Простое руководство по управлению средами 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/latest/user-guide/tasks/manage-environments.html