Все под рукой
Ноутбуки всегда были инструментом для постепенного развития идей программного обеспечения. Специалисты по обработке данных используют 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
и обратите внимание на две вещи:
- У вас должен быть установлен VIM ›7.3
- Проверьте наличие функции
+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. Другие плагины, которые вы, возможно, захотите рассмотреть:
- vim-syntastic / syntastic: подсветка синтаксиса Python.
- nvie / vim-flake8: проверка PEP8
- scrooloose / nerdtree: проводник структуры папок.
- tpope / vim-fugitive: интеграция с git
Вот полная, но не исчерпывающая .vimrc
конфигурация. Если у вас есть что добавить, прокомментируйте!
Заключение
Ноутбуки всегда были инструментом для постепенного развития идей программного обеспечения. Более того, JupyterLab стремится стать полноценной IDE. Однако раз в каждую синюю луну мы можем захотеть отредактировать .py
файл, а встроенный текстовый редактор - это просто текстовый редактор.
В этой истории рассматривается, как преобразовать ViM в среду разработки Python и использовать ее в качестве основного редактора кода через терминал. Если вам нужна дополнительная информация об использовании ViM, просто запустите vimtutor
в своем терминале и следуйте инструкциям!
об авторе
Меня зовут Димитрис Поулопулос, я инженер по машинному обучению, работающий в Arrikto. Я разработал и внедрил ИИ и программные решения для крупных клиентов, таких как Европейская комиссия, Евростат, МВФ, Европейский центральный банк, ОЭСР и IKEA.
Если вы хотите прочитать больше сообщений о машинном обучении, глубоком обучении, науке о данных и DataOps, подпишитесь на меня в Medium, LinkedIn или @ james2pl в Twitter. Также посетите страницу Ресурсы на моем веб-сайте, где можно найти отличные книги и курсы с самым высоким рейтингом, чтобы начать создавать свою собственную учебную программу по науке о данных!