Проекты на Python с помощью 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.

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

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

  • Создайте папку проекта и перейдите (cd) в нее.
  • Установите проект Python с помощью pyenv local $PYTHON_VERSION.
  • Запустите эту команду для создания виртуальной среды: pyenv virtualenv anaconda3–2019.10 venv-cool_project. Если версия Python не указана, то среда будет использовать ту, которая работает локально на данный момент.
  • Установите новую среду в качестве локального 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


    Поделиться статьей:


    Вернуться к статьям

    Комментарии

      Ничего не найдено.