Jupyter Notebook — приложение с открытым исходным кодом, в котором можно сразу увидеть результат выполнения кода (в этом плане это не привычное всем IDE).
Главное отличие от традиционных инструментов разработки — возможность разбить код на части и выполнять их по отдельности. Например, вы можете написать одну функцию и сразу проверить, как она работает, не запуская остальные фрагменты кода. Также можно менять порядок выполнения кода.
Удобная штука — отображение вывода сразу под выполненным фрагментом. Благодаря этому Jupyter ноутбук очень популярен в аналитике данных и Data Science. Специалисты получают предварительные результаты, строят графики и другую визуализацию.
Основной язык Jupyter Notebook — Python. Это связано с тем, что он является преемником более старого проекта — IPython Notebook. Но другие языки тоже поддерживаются. Переключаться между ними можно с помощью магических команд.
Если вы работаете с Python, никакие дополнительные команды не нужны. Просто создайте новый документ (об этом поговорим подробнее чуть ниже) и пишите код.
def hello_world(): print("Hello world!!!") hello_world()
Обратите внимание, на курсы по Python он наших друзей школы Mate Academy и Hillel. Освойте сложные вещи на простом и понятном языке.
Если нужен код на JavaScript, переключитесь на этот язык с помощью магической команды %%javascript
.
Код в этой ячейке будет на JS:
%%javascript const text = "hello world" alert(text)
Собственная магическая команда есть и у скриптового языка bash — %%bash
. Код после этой команды будет интерпретирован так, будто вы пишете его в окне терминала, а не в ноутбуке. Например:
%%bash mkdir Highload
В рабочем каталоге будет создана папка Highload. Проверить это можно стандартной командой ls
:
%%bash ls
Для написания комментариев и добавления разметки используется язык Markdown. Он поддерживается по умолчанию, как и Python.
Синтаксис очень простой.
# Заголовок 1 уровня ## Заголовок 2 уровня ### Заголовок 3 уровня * [Пункт маркированного списка](#ссылка1) * [Следующий пункт маркированного списка](#ссылка2)
С помощью Markdown в Jupyter Notebook можно создавать интерактивные статьи и целые учебники. Подробнее о синтаксисе языка разметки вы можете узнать из этого репозитория на GitHub.
Jupyter также позволяет установить дополнительные ядра с языками. Можно добавить Java, Ruby, Perl, С#, С++, SQL, Kotlin, Scala и еще несколько десятков ЯП. Ссылки на ядра с примерами использования смотрите в этом репозитории на GitHub.
Работа в Jupyter Notebook очень похожа на написание заметок в документе:
И самое главное — все это можно изменить динамически. Вы переписываете фрагмент кода, снова его запускаете и видите другой результат.
Когда вы снова откроете файл, он не только покажет код, который вы написали во всех разных ячейках, но и результат, который остался с момента последнего выполнения. Это очень полезно, когда вы должны программировать не для создания приложений, а для выполнения и анализа математических и/или технических операций.
Возможно, машинное обучение и Data Science — самые большие области применения Jupyter. Но он может быть невероятно полезным почти в каждой программе на Python, где цель состоит в том, чтобы запустить программу и увидеть результат без создания конечного продукта.
Несмотря на все преимущества, у разработчиков отношение к Jupyter Notebook неоднозначное. Например, его не рекомендуют использовать в качестве среды разработки. Причин несколько:
Основные области применения — нейросети, машинное обучение, анализ и визуализация данных, работа со статистикой. Это подтверждает исследование репозиториев GitHub. Например, в 2020 году больше всего звезд на Github получил проект Fastbook. Это введение в глубокое обучение с помощью библиотек Pytorch и FastAI, опубликованное с помощью Jupyter Notebook.
Самое большое количество звезд у справочника Python по Data Science. Полный текст также опубликован в формате Jupyter Notebooks.
Еще одно популярное направление — поэтапная разработка, когда важно быстро проверять разные куски кода и вносить в них исправления. Например, можно экспериментировать с алгоритмами в поисках оптимального решения или пробовать разные входные данные и сравнивать результаты.
Jupyter Notebook также используют для обучения, чтобы новички могли запускать фрагменты кода и сразу видеть результат. Но выше мы уже упоминали, почему это не всегда полезно, а иногда и вовсе вредно. Такой подход все-таки далек от реальной разработки на Python, как и любом другом языке программирования.
Самый простой способ запустить Jupyter Notebook — использовать онлайн-сервисы. Наиболее распространенное решение — облако Google Colaboratory или сокращенно Colab. Это бесплатный сервис, для работы с которым нужна только аккаунт Google.
Кроме Colab есть другие варианты — например, AWS от Amazon или Kaggle. Но они сложнее в освоении. Colab — самый простой, поэтому рекомендуем начать знакомство с него.
Откроется среда, в которой вы можете писать и выполнять код, а также добавлять текстовые пояснения. Google сразу выдает виртуальные ресурсы, которые будут использованы для вычислений в Colab. Но их слишком мало.
Поэтому даже самые простые вычисления на облаке будут занимать очень много времени.
Вместо облачных вычислений можно использовать ресурсы вашего компьютера. Установить Jupyter Notebook локально можно разными способами. Самые популярные — вместе с набором приложений для обработки данных Anaconda или отдельно через pip
.
С Anaconda нет никаких сложностей. Скачиваете установочный файл с официального сайта и ставите как любую другую программу. После установки в системе появится приложение Jupyter Notebook. При его запуске будет запускаться браузер, а внутри него — среда для работы с кодом.
Минус Anaconda в том, что вместе с Jupyter Notebook установится куча других приложений и библиотек, которые могут вам не понадобиться. Чтобы избежать этого, используйте другой способ — установку с помощью pip
. Для этого на компьютер должен быть установлен Python.
python --version
. Должна вернуться версия. Если появляется ошибка, проверьте правильность установки Python.python -m pip install -upgrade pip
.python -m pip install notebook
.На Linux и macOS отличается только порядок установки Python. Команды для обновления pip
и установки Jupyter Notebook — аналогичные.
Чтобы запустить Jupyter Notebook, выполните в командной строке:
jupyter notebook
Это откроет ноутбук в браузере, который используется в системе по умолчанию.
Вместо локальной машины можно использовать удаленный сервер. Хорошее решение, если, например, требуется организовать доступ к ноутбуку для разных пользователей.
Установка на удаленный сервер ничем не отличается от инсталляции на локальном компьютере. Отличия начинаются дальше. Если вы попробуете запустить ноутбук на удаленном сервере, то увидите сообщение об ошибке No web browser found: could not locate runnable browser.
Чтобы устранить эту проблему, нужно настроить туннель SSH, по которому вы будете подключаться к серверу и запускать Jupyter Notebook.
Чтобы создать туннель на Linux/macOS, запустите терминал и выполните команду вида:
ssh -L 8000:localhost:8888 username@your_server_ip
8888
— порт Jupyter Notebook по умолчанию. После запуска команды выше все, что вы запускаете на этом порту, будет появляться на порту 8000 локальной машины. Вместо 8000
можно указать другой порт, который вы предпочитаете. Желательно, чтобы он бы не менее 8000
, поскольку такие порты обычно не используются другими процессами.
Вместо username
укажите имя пользователя на удаленном сервере без прав root
, а после @
впишите IP-адрес сервера.
После успешного выполнения команды вы установите SSH-туннель с удаленным сервером, на котором установлен ноутбук.
Чтобы запустить его, выполните в терминале команду:
jupyter notebook
Чтобы начать работать с ноутбуками, запустите на локальной машине браузер и перейдите по адресу localhost:8000
. Вместо 8000
укажите тот порт, который вы использовали при установке SSH-туннеля.
На Windows для создания SSH-туннелей используют дополнительное ПО. Самое популярное приложение — PuTTY.
localhost:8888
. 8888
— это адрес порта ноутбука по умолчанию.Forwarded ports
.Чтобы запустить соединение, нажмите Open. После успешного подключения вызовите Jupyter Notebook на удаленном сервере командой:
jupyter notebook
Чтобы приступить к работе с ноутбуками, откройте на локальной машине любой браузер и перейдите по адресу localhost:8000
, где 8000
— это адрес порта локальной машины, который вы указали в настройках туннеля в PuTTY.
При запуске на удаленном сервере Jupyter Notebook сначала просит ввести токен или пароль. Найти его можно в терминале, в ответе после запуска ноутбука. Например:
localhost:8888/?token=Example_Jupyter_Token_3cadb8b8b7005d9a46ca4d6675
После запуска Jupyter Notebook покажет все каталоги и файлы, которые хранятся в рабочей директории.
Если вы уже попробовали Google Colab, то с запущенным локально Jupyter Notebook разберетесь очень быстро. Интерфейс простой, изучим его на нескольких примерах.
Работа начинается с создания нового ноутбука. Чтобы добавить его, нажмите New и выберите Python 3.
Две главные сущности ноутбука — cell
(ячейка) и kernel
(ядро). Ядро определяет, как будет выполняться код. По умолчанию используется ядро Python, но, как мы говорили выше, его можно изменить. Код и текст добавляется в ячейки.
Начните с текстового описания проекта. Для этого измените тип первой ячейки: Cell > Cell Type > Markdown. Теперь в эту ячейку можно добавить текст, размеченный с помощью Markdown. Пусть это будет несколько заголовков:
# Highload ## Мой первый проект в Jupyter Notebook
Чтобы превратить заполненную ячейку в текст, нажмите сочетание клавиш Ctrl + Enter. Затем можно вернуться к ячейке, изменить ее содержимое и снова сохранить этим же сочетанием клавиш. Аналогичным образом добавляются другие текстовые описания. Везде используется синтаксис Markdown.
Следующий шаг — добавление и выполнение фрагментов кода. В качестве примера импортируйте библиотеку numpy для добавления рандомайзера и затем выполните возведение числа в квадрат.
import numpy as np def square(x): return x * x
В этом фрагменте вы определили функцию возведения числа в квадрат. После запуска ячейки с этим кодом вы сможете ссылаться на np
и функцию square
— ноутбук уже их знает и видит.
Дальше можно выполнять вычисления.
x = np.random.randint(1, 10) y = square(x) print('%d squared is %d' % (x, y))
По умолчанию библиотеки импортируются так же, как в любой другой среде разработке на Python. Однако есть одно исключение.
Если вы хотите, чтобы визуализация Matplotlib отображалась прямо в ноутбуке, используйте конструкцию %matplotlib inline
. Пример импорта:
import numpy as np import pandas as pd import matplotlib.pyplot as plt %matplotlib inline
После такого импорта можно добавлять данные и строить графики, которые будут отображаться прямо в ноутбуке.
Важно помнить, что Jupyter Notebook выполняет код сверху вниз. Поэтому если вносите изменения, обязательно проверяйте, что результат тоже корректируется. Если в ячейке сохраняется устаревший вывод, можно сбросить настройки ядра через меню Kernel:
Еще одна полезная функция — прерывание выполнения программы, когда она зависает, например, из-за ошибки в функции или слишком большого объема данных. Сделать это можно через меню Kernel > Interrupt.
Перед сохранением можно изменить название проекта. По умолчанию это файл Untitled.ipynb
.
За каждым таким файлом в формате ipynb
скрывается текстовый документ, который описывает содержимое сохраненного ноутбука в формате JSON. Каждая ячейка преобразуется в строки. К ним добавляются метаданные. Их даже можно редактировать самостоятельно через меню ноутбука: Edit > Edit Notebook Metadata.
Jupyter Notebook работает в двух режимах: edit mode
(редактирование) и command mode
(командный режим).
Когда вы работаете с ячейкой, она подсвечивается цветом. Если это зеленый цвет, значит, вы в режиме редактирования и можете вносить изменения. Если это синий цвет, значит, вы в командном режиме и можете управлять ячейкой с помощью специальных команд.
Одно сочетание горячих клавиш вы уже знаете — это Ctrl + Enter. Это сочетание заставляет ячейку выполнить код, который в ней записан. А вот список других клавиш и сочетаний, которые можно использовать в командном режиме:
В режиме редактирования тоже есть поддержка горячих клавиш, хотя сочетаний не так много. Например, чтобы разделить ячейку по курсору, нажмите сочетание Ctrl + Shift + —.
Чтобы переключиться из командного режима в режим редактирования, выделите ячейку и нажмите Enter. Чтобы переключиться обратно в командный режим, нажмите Esc.
Поделиться результатами своей работы в Jupyter Notebook с другими пользователями можно разными способами. Самый простой — отправить файл с расширением *.ipynb
. Получатель сможет открыть его в своем ноутбуке.
Можно сохранить содержимое ноутбука в формате HTML, Python и даже PDF. Эти варианты доступны в меню File > Download as.
Можно не отправлять файлы, а расшарить ноутбук онлайн. Популярные способы — GitHub Gist и nbviewer.
Теперь вы знаете, что такое Jupyter Notebook, для решения каких задач он подходит и какие у него есть преимущества и недостатки. Вы можете пользоваться ноутбуками, размещенными на облаке, или запускать среду для экспериментов локально, на своем компьютере.
Чтобы узнать больше о Jupyter Notebook, смотрите документацию на официальном сайте. Закрепить знания и разобраться с установкой среды вам поможет это качественное тематическое видео:
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…