Все под рукой

Ноутбуки всегда были инструментом для постепенного развития идей программного обеспечения. Специалисты по обработке данных используют Jupyter для ведения журнала своей работы, исследования и экспериментов с новыми алгоритмами, быстрого наброска новых подходов и немедленного наблюдения за результатами.

Более того, JupyterLab стремится стать полноценной IDE; просто не та IDE, к которой вы привыкли. Благодаря своим замечательным расширениям и библиотекам, таким как kale и nbdev, он, безусловно, способен на гораздо больше, чем просто набросок идеи. Прочтите историю ниже, чтобы узнать больше.



Однако раз в каждую синюю луну мы можем редактировать .py файл. Этот файл может содержать некоторые служебные функции, которые мы импортируем в Блокнот, или определяем классы наших моделей. Это хорошая практика, поэтому мы не загрязняем Блокноты множеством определений. Но текстовый редактор, поставляемый с JupyterLab, - это всего лишь простой текстовый редактор без функций.

Так что мы можем сделать? Есть попытки вроде this one, который пытается интегрировать редактор monaco (редактор кода, на котором работает VS Code) в JupyterLab. Тем не менее, как участники явно упоминают в файле README, это расширение является просто реализацией« доказательственной концепции и далеко не в состоянии производства». Кроме того, последняя фиксация была сделана 3 года назад ( на момент написания), так что это не похоже на очень активный проект.

Но никакого расширения нам не нужно. У нас есть терминал. Таким образом, у нас может быть ViM. А в ViM есть все, что нам нужно; просто нужно время, чтобы овладеть им.

Если вам нравится ViM, вы знаете, о чем я говорю. Если нет, не уклоняйтесь! В этой истории показано, как превратить ViM в среду разработки Python и использовать ее вместе с Jupyter.

Learning Rate - это информационный бюллетень для тех, кто интересуется миром AI и MLOps. Каждую пятницу вы будете получать от меня обновления и мысли о последних новостях и статьях об искусственном интеллекте. Подпишитесь здесь!

ViM для Python

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

Итак, я предполагаю, что вы работаете внутри виртуальной машины в облаке. Обычно это означает среду Linux. Чтобы установить ViM в дистрибутивы Debian, выполните следующие команды:

sudo apt-get remove vim-tiny
sudo apt-get update
sudo apt-get install vim

Обратите внимание, что в некоторых дистрибутивах Linux vim-tiny предустановлено. Таким образом, нам нужно сначала удалить его, а затем установить полную версию.

Затем давайте проверим, что у нас есть все необходимое. Запустите vim --version и обратите внимание на две вещи:

  1. У вас должен быть установлен VIM ›7.3
  2. Проверьте наличие функции +python или +python3

Мы готовы. Далее нам понадобится хороший менеджер плагинов.

Vundle

Я считаю, что Vundle - отличный и простой в использовании менеджер плагинов. Таким образом, мы будем использовать это для установки всего, что нам нужно. Для установки Vundle нам понадобятся две вещи. Сначала git clone проект в соответствующем каталоге:

git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim

Затем нам нужно создать .vimrc файл в нашем home каталоге и добавить несколько строк поверх него. Итак, сначала создайте файл:

touch ~/.vimrc

Затем добавьте следующие строки:

set nocompatible              " required
filetype off                  " required

" set the runtime path to include Vundle
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()

" let Vundle manage Vundle, required
Plugin 'gmarik/Vundle.vim'

" add all your plugins here between the vundle#begin() and "vundle#end() calls

" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required

Видите линию, которая звонит vundle#begin()? Между этим и вызовом vundle#end() мы можем добавить любой плагин, который захотим. Собственно говоря, мы это уже сделали: добавили плагин gmarik/Vundle.vim. Установить новый плагин так же просто, как скопировать и вставить его уникальный путь на GitHub. Посмотрим, как это сделать позже.

А пока запустите ViM, войдите в командный режим, нажав :, и выполните PluginInstall. Давай двигаться.

IDE Python

Первый плагин, который мы установим, позволяет выполнять сворачивание. Вы когда-нибудь видели исходный код numpy? Обычно docstring функции занимает все пространство. Давайте сложим его по умолчанию. Установите плагин, добавив эту строку между вызовами begin и end, которые мы видели ранее:

Plugin 'tmhedberg/SimpylFold'

Напоминание: каждый раз, когда вы добавляете новый плагин, не забывайте устанавливать его с помощью команды PluginInstall, которую мы видели.

Чтобы включить сворачивание docstring по умолчанию, добавьте следующий параметр вне блока begin-end.

let g:SimpylFold_docstring_preview=1

Затем давайте включим автоматический отступ. Установите следующий плагин (теперь вы знаете как):

Plugin 'vim-scripts/indentpython.vim'

Более того, вы можете указать ViM, как вы хотите, чтобы он обрабатывал .py файлы, добавив следующие параметры в файл vimrc:

au BufNewFile,BufRead *.py
    \ set tabstop=4 |
    \ set softtabstop=4 |
    \ set shiftwidth=4 |
    \ set textwidth=79 |
    \ set expandtab |
    \ set autoindent |
    \ set fileformat=unix

Названия этих настроек говорят сами за себя. Параметр autoindent делает большинство вещей правильно, но для вашего спокойствия установите плагин vim-scripts/indentpython.vim, специфичный для Python.

И последнее, но не менее важное: вам нужно автозаполнение. Лучшим инструментом для этой работы является YouCompleteMe. Однако его установка немного сложнее. Сначала установите плагин со следующей строкой:

Bundle 'Valloric/YouCompleteMe'

Скорее всего, в конце вы увидите ошибку. Не волнуйся. Выполните и установите необходимые зависимости:

apt install build-essential cmake python3-dev
apt install mono-complete golang nodejs default-jdk npm

Наконец, скомпилируйте плагин:

cd ~/.vim/bundle/YouCompleteMe
python3 install.py --all

Вот и все! У вас есть все необходимое для превращения ViM в Python IDE. Другие плагины, которые вы, возможно, захотите рассмотреть:

Вот полная, но не исчерпывающая .vimrc конфигурация. Если у вас есть что добавить, прокомментируйте!

Заключение

Ноутбуки всегда были инструментом для постепенного развития идей программного обеспечения. Более того, JupyterLab стремится стать полноценной IDE. Однако раз в каждую синюю луну мы можем захотеть отредактировать .py файл, а встроенный текстовый редактор - это просто текстовый редактор.

В этой истории рассматривается, как преобразовать ViM в среду разработки Python и использовать ее в качестве основного редактора кода через терминал. Если вам нужна дополнительная информация об использовании ViM, просто запустите vimtutor в своем терминале и следуйте инструкциям!

об авторе

Меня зовут Димитрис Поулопулос, я инженер по машинному обучению, работающий в Arrikto. Я разработал и внедрил ИИ и программные решения для крупных клиентов, таких как Европейская комиссия, Евростат, МВФ, Европейский центральный банк, ОЭСР и IKEA.

Если вы хотите прочитать больше сообщений о машинном обучении, глубоком обучении, науке о данных и DataOps, подпишитесь на меня в Medium, LinkedIn или @ james2pl в Twitter. Также посетите страницу Ресурсы на моем веб-сайте, где можно найти отличные книги и курсы с самым высоким рейтингом, чтобы начать создавать свою собственную учебную программу по науке о данных!