Руководство по разработке рабочего процесса, включающего управление средой с использованием Conda, JupyterLab и Git

Вступление

Проекты по науке о данных и машинному обучению имеют зависимости, на которые мы полагаемся, чтобы запустить наш код, например pandas или numpy. Эти зависимости со временем обновляются и имеют разные версии, что может привести к поломке кода, если используется неправильная версия. Если вы работаете с другими членами группы, вам также необходимо поддерживать одну и ту же локальную среду разработки на разных компьютерах для успешного выполнения кода. Чтобы создать воспроизводимые среды для проектов, рекомендуется использовать диспетчер среды, который отслеживает все зависимости, например Conda.

Что такое Конда?

Conda - это система управления пакетами с открытым исходным кодом и система управления средой, работающая в Windows, macOS и Linux. Conda быстро устанавливает, запускает и обновляет пакеты и их зависимости. Conda легко создает, сохраняет, загружает и переключается между средами на вашем локальном компьютере. Он был создан для программ Python, но он может упаковывать и распространять программное обеспечение для любого языка.

- Документация Anaconda

Эта статья поможет вам разработать лучший рабочий процесс для управления вашей средой с помощью Conda. Не стесняйтесь пропускать любой из разделов и переходить к нужному коду!

Обзор

  • Установка Anaconda
  • Создание и активация среды Conda
  • Установка и удаление зависимостей
  • Экспорт среды Conda
  • Использование Conda с JupyterLab
  • Деактивация или удаление среды Conda
  • Сводка команд
  • Пример рабочего процесса для воспроизводимых сред

Установка Anaconda

Если у вас еще не установлена ​​Anaconda, следуйте инструкциям здесь, чтобы установить ее для своей операционной системы. После установки вы должны увидеть Anaconda-Navigator в своих приложениях.

Создание и активация среды Conda

Вы можете создать совершенно новую среду Conda, когда начинаете новый проект, или воссоздать существующую среду из yaml файла.

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

Чтобы создать новую среду Conda, откройте свой терминал и введите следующую команду:

conda create -n datasci-env

Вы увидите следующее сообщение с просьбой продолжить. Введите y, чтобы продолжить создание среды.

Создание окружения из файла environment.yml

Если у вас есть существующий файл, содержащий зависимости проекта, вы можете воссоздать среду, выполнив следующие действия:

conda env create -f environment.yaml

В этом случае в первой строке файла yaml будет указано имя среды. Имя среды, созданной с помощью следующего yaml файла, будет называться datasci-env.

Активировать

Как только ваша среда создана, вы можете активировать ее, используя:

conda activate datasci-env

Вы можете определить, активирована среда или нет, посмотрев на левую часть терминала. Вы должны увидеть, как он изменился с base на datasci-env, как показано ниже:

Подтвердите версию Python

Мы можем проверить версию python в нашей недавно созданной среде Conda с помощью следующей команды:

python --version
OR 
python3 --version

Примечание. По умолчанию в macOS Catalina в качестве Python 2 используется Python, поэтому для запуска чего-либо на Python 3 необходимо использовать python3

Вот что вы увидите, запустив эти команды в своем терминале:

Это означает, что эта среда conda, которую мы только что создали, работает под управлением версии Python 3.7.3. Если вам нужна эта версия Python, вы можете пропустить следующий раздел и перейти к установке зависимостей.

Среды Conda с различными версиями Python (необязательно)

Если вам нужна другая версия python для вашей среды, вам нужно будет указать версию во время установки. Во-первых, давайте деактивируем только что созданную среду:

conda deactivate

Например, если мы хотим создать среду Python 3.5, мы можем выполнить следующую команду:

conda create -n datasci-env-py35 python=3.5

Ниже я подтверждаю, что conda установила правильную версию python, активировав среду и запустив python3 --version.

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

conda env list

Установка и удаление зависимостей

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

Установить

Теперь вы сможете устанавливать свои зависимости с помощью conda install. Давайте попробуем это с помощью некоторых популярных библиотек по науке о данных:

conda install pandas matplotlib numpy scikit-learn

Вы получите еще один запрос с просьбой продолжить, и после ввода y вы увидите, что все пакеты установлены успешно.

Если вам нужно установить определенную версию пакета, вы можете просто назвать версию при установке:

conda install pandas=0.25.1

Эта команда выше также работает для перехода на более раннюю версию библиотек и пакетов после их установки.

Удалить

Если вы хотите удалить пакет, вы можете использовать следующее:

conda uninstall PACKAGE_NAME

Вы можете проверить все пакеты и версии в вашей текущей среде, используя conda list, который отобразит следующее:

Примечания:
- Если команда conda install не работает для библиотеки, которую вы пытаетесь установить, вы можете попробовать поискать в Google, как установить эту конкретную библиотеку.
- Будьте осторожны при обновлении версии Python при установке зависимостей. Выше видно, что при установке моя версия python была обновлена ​​до 3.8.2.

Экспорт среды Conda

Теперь, когда у нас есть среда с несколькими установленными зависимостями, мы можем экспортировать их для управления версиями и воспроизводимости. В идеале вы должны экспортировать эти файлы в каталог своего проекта и отправлять их в github, чтобы иметь надлежащую запись истории версий. Вы можете экспортировать файл txt или yaml в зависимости от ваших потребностей.

Сначала убедитесь, что у вас активирована среда conda и что вы находитесь в правильном каталоге проекта в своем терминале. Чтобы экспортировать зависимости в файл txt, выполните следующее:

# with conda
conda list --export > requirements.txt
# with pip
pip freeze > requirements.txt

Чтобы экспортировать зависимости в файл yaml, выполните следующее:

conda env export > environment.yaml
# OR if you run into issues, try --no-builds
conda env export --no-builds > environment.yaml

После выполнения любой из этих команд вы должны увидеть новый файл в каталоге вашего проекта, содержащий все зависимости. Вы должны отправить этот файл на github, чтобы ваши товарищи по команде или вы позже могли получить доступ и воссоздать точную среду проекта.

Если вы работаете в команде, вы можете в какой-то момент обновить среду на своей стороне, если другие внесут изменения, установив новые зависимости. Вы можете обновить существующую среду conda из файла yaml, используя:

conda env update --file environment.yaml

Использование Conda с JupyterLab

Если вы хотите использовать среды conda внутри JupyterLab, вам необходимо создать специальное ядро ​​для этой среды.

Сначала установите jupyterlab иipykernel внутри своей среды, затем создайте новое ядро:

conda install -c conda-forge jupyterlab ipykernel
ipython kernel install --user --name=datasci-env

Примечание. имя ядра может отличаться от имени среды, но вы должны оставить их такими же, чтобы вы могли помнить, какое ядро ​​связано с какой средой.

Теперь вы сможете запустить JupyterLab со своего терминала, используя следующую команду:

jupyter lab

После запуска JupyterLab вы можете открыть новый или существующий блокнот, щелкнуть ядра в правом верхнем углу и выбрать новое ядро ​​из раскрывающегося списка. Если вы не видите ядро, попробуйте перезапустить Jupyter.

Если вы хотите вывести список ядер, доступных в терминале:

jupyter kernelspec list

Деактивация сред

Когда вы закончите использовать среду conda, вы можете деактивировать ее в своем терминале с помощью следующей команды:

conda deactivate

Теперь ваш терминал должен отображать (base) как среду слева:

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

Если вы закончили работу над проектом и вам больше не нужна среда, вы можете удалить ее с помощью следующей команды:

conda env remove -n datasci-env

Сводка команд

# create new environment
conda create -n ENV_NAME
# create new environment with different version of python
conda create -n ENV_NAME python=VERSION
# create environment from existing environment.yaml
conda env create -f environment.yaml
# update existing environment from environment.yaml
conda env update --file environment.yaml
# activate environment
conda activate ENV_NAME
# deactivate environment
conda deactivate
# delete/remove environment
conda env remove -n ENV_NAME
# list all environments
conda env list
# export requirements.txt with conda
conda list --export > requirements.txt
# export requirements.txt with pip
pip freeze > requirements.txt
# export environment.yaml
conda env export > environment.yaml
# export environment.yaml with no builds
conda env export --no-builds > environment.yaml
# install dependencies
conda install PACKAGE_NAME
OR
conda install -c conda-forge PACKAGE_NAME
# install dependencies with a specific version
conda install PACKAGE_NAME=VERSION
# uninstall dependencies
conda uninstall PACKAGE_NAME
# list all dependencies
conda list
# create ipython kernel (for jupyter and jupyterlab)
conda install -c conda-forge jupyterlab ipykernel
ipython kernel install --user --name=KERNEL_NAME
# list all ipython kernels
jupyter kernelspec list
# uninstall/remove existing ipython kernel
jupyter kernelspec uninstall KERNEL_NAME

Пример рабочего процесса для воспроизводимых сред

  1. Создать новое репозиторий Github для проекта
  2. Клонировать репо локально с помощью git clone
  3. cd в каталог проекта
  4. Создайте новую среду Conda
  5. Активировать env
  6. Установить зависимости
  7. Работа над проектом в Jupyter или другой IDE
  8. (необязательно) если вы работаете в Jupyter, создайте ядро ​​из env
  9. Экспорт conda env в файл yaml или txt
  10. Сохранить код
  11. Создайте .gitignore, чтобы избежать добавления файлов в git
  12. Добавьте файлы в git, используя git add .
  13. Отправить файл среды и код в Github

Для воспроизведения окружающей среды:

  1. Клонировать репо на другом компьютере
  2. Создайте среду из файла yaml или txt (не обязательно использовать Conda)
  3. Выполнить код

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

Теперь вы должны иметь возможность создавать, активировать и устанавливать зависимости в среды conda для создания воспроизводимых сред обработки данных и машинного обучения.

Не стесняйтесь связаться со мной в твиттере @elizabethets или LinkedIn!

Источники