Управление зависимостями играет важную роль для разработчиков пакетов и ПО. Но как насчет специалистов по науке о данных, которые не занимаются развертыванием PyPI или conda-forge?
Если вы уже работали с Python, то знаете, как тяжело разобраться в этой загроможденной среде разработки с большим количеством установленных пакетов. Поиск действительно необходимых для проекта пакетов — непростая задача для выполнения вручную .
Пакеты не всегда обновляются одновременно, а многие из них несовместимы друг с другом или даже с используемой версией Python или Anaconda. Нет никаких гарантий, что пакеты из разных каналов в conda не будут конфликтовать. При загрузке всех элементов в одну большую среду возникновение противоречивых зависимостей неизбежно. Не говоря уже о различных инструментах, таких как pip, pipx, conda, poetry, hatch, pipenv, pyenv, virtualenv, pyvenv, pyenv-virtualenv, virtualenvwrapper, pyenv-virtualenvwrapper и venv… которые, несмотря на похожие названия, зачастую даже не совместимы друг с другом.
Еще одна причина не использовать anaconda вне контейнера — вы не знаете, что именно запускаете. В некоторых случаях сценарий активации anaconda настолько сильно искажает очистку среды системы pre-pyenv, что единственный способ быстро решить эту проблему — добавить HOST=$(hostname)
к .zshrc.
При предоставлении точных версий библиотек, используемых в научном анализе, результаты будут лучше поддаваться проверке. Управление зависимостями может сыграть важную роль в отчетности и точности. Иногда ошибки в пакетах Python являются основной причиной вычислительных ошибок в статистических моделях. Отслеживание используемых пакетов также дает возможность при необходимости проверить или исправить полученные результаты.
Здесь можно найти краткое руководство по настройке системы с помощью pyenv и pyenv-virtualenv. Преимущества такого способа управления:
Для защиты важных файлов перед установкой новой системы с помощью этого метода также рекомендую использовать Arq Cloud Backup, который работает аналогично git и почти полностью автоматизирован.
После завершения установки pyenv можно приступать к созданию рабочих процессов в виртуальных средах. Рассмотрим создание проекта с дистрибутивом Anaconda, чтобы узнать, как можно использовать Visual Studio Code для разработки Jupyter notebooks и их конвертирования в сценарии .py.
У каждого проекта должна быть своя директория, а у каждой директории — своя виртуальная среда. Эта структура выполняет две важные функции:
.python-version file
для каждой директории (и, следовательно, для каждого проекта). Это означает, что pyenv-virtualenv может автоматически переключаться на соответствующую среду при смене директории.TL;DR-версия для установки проекта:
cd
) в нее.pyenv local $PYTHON_VERSION
.pyenv virtualenv anaconda3–2019.10 venv-cool_project
. Если версия Python не указана, то среда будет использовать ту, которая работает локально на данный момент.pyenv local
с именем venv и активируйте ее с помощью conda activate venv-cool_project
. При запуске приведенного ниже однострочника при каждом создании нового проекта вы получаете возможность входить и выходить (cd
) из директорий, а виртуальные среды будут автоматически активироваться и деактивироваться (вам также нужно изменить имя среды и интерпретатор Python).
Ниже представлен 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 сочетает в себе множество классных функций. Например, он может автоматически выбирать подходящий виртуальный интерпретатор для директории проекта, если вы установите его в соответствии с инструкциями выше.
Для начала воспользуемся brew cask install visual-studio-code
.
Затем переходим к настройкам VS Code:
⌘+⇧+P
и выберите Shell Command: Install 'code' command in PATH
. Таким образом вы запустите VS Code из внешнего терминала: code --
запускает приложение, code.
открывает текущую рабочую директорию, а code path/to/file/or/dir
открывает определённый файл или директорию. При входе и выходе из директорий проектов в интегрированном терминале интерпретатор python автоматически определяет venvs при наличии файла .python-version
(файл должен существовать при правильном использовании pyenv-virtualenv).
Чтобы указать приложению, какой интерпретатор Python нужно использовать, нажмите на имя интерпретатора Python на нижней панели инструментов или откройте палитру команд и введите Python: Select Interpreter
.
Находясь в терминале, также можно создавать и активировать новые venvs привычным образом.
Чтобы воспользоваться ноутбуками, просто откройте файл .ipynb
или выберите Python: Create New Blank Jupyter Notebook
из палитры команд, находясь в среде conda. Теперь можно запускать ячейки и создавать ноутбуки в обычном режиме, но с дополнительным преимуществом, которое не зависит от веб-браузера.
Ноутбук также можно конвертировать в сценарий 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
Комментарии