Руководство по разработке рабочего процесса, включающего управление средой с использованием 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 environmentconda 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
Пример рабочего процесса для воспроизводимых сред
- Создать новое репозиторий Github для проекта
- Клонировать репо локально с помощью
git clone
cd
в каталог проекта- Создайте новую среду Conda
- Активировать env
- Установить зависимости
- Работа над проектом в Jupyter или другой IDE
- (необязательно) если вы работаете в Jupyter, создайте ядро из env
- Экспорт conda env в файл
yaml
илиtxt
- Сохранить код
- Создайте
.gitignore
, чтобы избежать добавления файлов в git - Добавьте файлы в git, используя
git add .
- Отправить файл среды и код в Github
Для воспроизведения окружающей среды:
- Клонировать репо на другом компьютере
- Создайте среду из файла
yaml
илиtxt
(не обязательно использовать Conda) - Выполнить код
Примечание. Если вы планируете развернуть свой проект, вы, вероятно, захотите сохранить отдельную среду развертывания, содержащую только зависимости, необходимые для развернутых аспектов.
Теперь вы должны иметь возможность создавать, активировать и устанавливать зависимости в среды conda для создания воспроизводимых сред обработки данных и машинного обучения.
Не стесняйтесь связаться со мной в твиттере @elizabethets или LinkedIn!