Visual Studio Code

Зачем использовать виртуальные среды в науке о данных?

Управление зависимостями играет важную роль для разработчиков пакетов и ПО. Но как насчет специалистов по науке о данных, которые не занимаются развертыванием PyPI или conda-forge?

Виртуальные среды помогают исправлять ошибки

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

Пакеты не всегда обновляются одновременно, а многие из них несовместимы друг с другом или даже с используемой версией Python или Anaconda. Нет никаких гарантий, что пакеты из разных каналов в conda не будут конфликтовать. При загрузке всех элементов в одну большую среду возникновение противоречивых зависимостей неизбежно. Не говоря уже о различных инструментах, таких как pip, pipx, conda, poetry, hatch, pipenv, pyenv, virtualenv, pyvenv, pyenv-virtualenv, virtualenvwrapper, pyenv-virtualenvwrapper и venv… которые, несмотря на похожие названия, зачастую даже не совместимы друг с другом.

Поломка проекта при использовании Anaconda — вопрос времени

Еще одна причина не использовать anaconda вне контейнера — вы не знаете, что именно запускаете. В некоторых случаях сценарий активации anaconda настолько сильно искажает очистку среды системы pre-pyenv, что единственный способ быстро решить эту проблему — добавить HOST=$(hostname) к .zshrc.

Виртуальные среды способствуют воспроизводимости результатов в науке о данных

При предоставлении точных версий библиотек, используемых в научном анализе, результаты будут лучше поддаваться проверке. Управление зависимостями может сыграть важную роль в отчетности и точности. Иногда ошибки в пакетах Python являются основной причиной вычислительных ошибок в статистических моделях. Отслеживание используемых пакетов также дает возможность при необходимости проверить или исправить полученные результаты.

pyenv в сочетании с pyenv-virtualenv для безопасного управления установками python

Здесь можно найти краткое руководство по настройке системы с помощью pyenv и pyenv-virtualenv. Преимущества такого способа управления:

  • чистый, гибкий и реверсивный;
  • устойчивый к ошибкам пользователей;
  • хорошая защита от ошибок, возникающих в среде при работе с anaconda.

Для защиты важных файлов перед установкой новой системы с помощью этого метода также рекомендую использовать Arq Cloud Backup, который работает аналогично git и почти полностью автоматизирован.

Интегрированная среда разработки с pyenv и Visual Studio Code

После завершения установки pyenv можно приступать к созданию рабочих процессов в виртуальных средах. Рассмотрим создание проекта с дистрибутивом Anaconda, чтобы узнать, как можно использовать Visual Studio Code для разработки Jupyter notebooks и их конвертирования в сценарии .py.

У каждого проекта должна быть своя директория, а у каждой директории — своя виртуальная среда. Эта структура выполняет две важные функции:

  1. Обеспечивает правильную организацию всех элементов, что упрощает разделение проектов, управление зависимостями и исключает лишние элементы.
  2. Позволяет создать отдельный .python-version file для каждой директории (и, следовательно, для каждого проекта). Это означает, что pyenv-virtualenv может автоматически переключаться на соответствующую среду при смене директории.

TL;DR-версия для установки проекта:

  1. Создайте папку проекта и перейдите (cd) в нее.
  2. Установите проект Python с помощью pyenv local $PYTHON_VERSION.
  3. Запустите эту команду для создания виртуальной среды: pyenv virtualenv anaconda3–2019.10 venv-cool_project. Если версия Python не указана, то среда будет использовать ту, которая работает локально на данный момент.
  4. Установите новую среду в качестве локального Python-проекта с помощью команды pyenv local с именем venv и активируйте ее с помощью conda activate venv-cool_project.

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

$ mkdir $2 && cd $2 && pyenv local $1 && pyenv virtualenv venv-$2 && pyenv local venv-$2 && pyenv activate venv-$2

Ниже представлен GitHub gist со сценарием, который сделает всю работу за вас. Загрузите его (потребуется запустить chmod +x newproj.sh, чтобы убедиться, что он выполняемый). Затем просто используйте его для создания новых проектов, передав ему нужную версию Python и имя проекта:

#!/bin/sh

# Usage: $ sh newproj.sh pythonversion projectname

mkdir $2 && cd $2 && pyenv local $1 && pyenv virtualenv venv-$2 && pyenv local venv-$2 && pyenv activate venv-$2

Visual Studio Code в сочетании с Python и Jupyter

Visual Studio Code сочетает в себе множество классных функций. Например, он может автоматически выбирать подходящий виртуальный интерпретатор для директории проекта, если вы установите его в соответствии с инструкциями выше.

Для начала воспользуемся brew cask install visual-studio-code.

Затем переходим к настройкам VS Code:

  • Убедитесь, что терминал системы синхронизирован с терминалом приложения: VS Code должен использовать приложение терминала вашей ОС с переменной «External».
  • Включите встроенную функцию терминала, чтобы использовать эмулятор в приложении VSCode.
Пользовательские настройки VS Code для интегрированного терминала и iTerm.app на macOS
  • Откройте палитру команд с помощью ⌘+⇧+P и выберите Shell Command: Install 'code' command in PATH. Таким образом вы запустите VS Code из внешнего терминала: code -- запускает приложение, code. открывает текущую рабочую директорию, а code path/to/file/or/dir открывает определённый файл или директорию.
Одна из директорий проекта с интегрированным терминалом.
  • Установите расширение Python для VS Code. Таким образом, при сохранении файла с расширением Python редактор будет знать, что нужно интерпретироваться в контексте Python.

При входе и выходе из директорий проектов в интегрированном терминале интерпретатор python автоматически определяет venvs при наличии файла .python-version (файл должен существовать при правильном использовании pyenv-virtualenv).

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

Чтобы указать приложению, какой интерпретатор Python нужно использовать, нажмите на имя интерпретатора Python на нижней панели инструментов или откройте палитру команд и введите Python: Select Interpreter.

Список доступных интерпретаторов/сред и их пути

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

Создание Jupyter notebooks

Чтобы воспользоваться ноутбуками, просто откройте файл .ipynb или выберите Python: Create New Blank Jupyter Notebook из палитры команд, находясь в среде conda. Теперь можно запускать ячейки и создавать ноутбуки в обычном режиме, но с дополнительным преимуществом, которое не зависит от веб-браузера.

jupyter notebook в виртуальной среде conda в vscode

Ноутбук также можно конвертировать в сценарий Python одним щелчком мыши или с помощью Python: Convert to python script:

Ноутбук, конвертированный в сценарий

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

Создавайте великолепные проекты с уверенностью

Мы рассмотрели управление пакетами в среде разработки, простое превращение conda envs в файлы requirements.txt и более эффективную очистку ноутбуков для создания работоспособных сценариев. VS Code предлагает еще больше инструментов, таких как подсветка синтаксиса, линтинг, интеграция тестов и интерфейсы с GitHub, Docker, различными базами данных и многим другим для активизации проектов. Добавьте эти инструменты в рабочий процесс науки о данных, чтобы стать более эффективным программистом и разработчиком!

Читайте также:


Перевод статьи Lora Johns: Power up your Python Projects with Visual Studio Code

Предыдущая статьяПродвинутый CLI: команды, которые должен знать каждый разработчик
Следующая статья10 отличных JavaScript библиотек на 2020 год