Python. Урок 6. Работа с IPython и Jupyter Notebook
IPython представляет собой мощный инструмент для работы с языком Python. Базовые компоненты IPython – это интерактивная оболочка для с широким набором возможностей и ядро для Jupyter. Jupyter notebook является графической веб-оболочкой для IPython, которая расширяет идею консольного подхода к интерактивным вычислениям.
Основные отличительные особенности данной платформы – это комплексная интроспекция объектов, сохранение истории ввода на протяжении всех сеансов, кэширование выходных результатов, расширяемая система “магических” команд, логирование сессии, дополнительный командный синтаксис, подсветка кода, доступ к системной оболочке, стыковка с pdb отладчиком и Python профайлером.
IPython позволяет подключаться множеству клиентов к одному вычислительному ядру и, благодаря своей архитектуре, может работать в параллельном кластере.
В Jupyter notebook вы можете разрабатывать, документировать и выполнять приложения на языке Python, он состоит из двух компонентов: веб-приложение, запускаемое в браузере, и ноутбуки – файлы, в которых можно работать с исходным кодом программы, запускать его, вводить и выводить данные и т.п.
Веб приложение позволяет:
- редактировать Python код в браузере, с подсветкой синтаксиса, автоотступами и автодополнением;
- запускать код в браузере;
- отображать результаты вычислений с медиа представлением (схемы, графики);
- работать с языком разметки Markdown и LaTeX.
Ноутбуки – это файлы, в которых сохраняются исходный код, входные и выходные данные, полученные в рамках сессии. Фактически, он является записью вашей работы, но при этом позволяет заново выполнить код, присутствующий на нем. Ноутбуки можно экспортировать в форматы PDF, HTML.
Установка и запуск
Jupyter Notebook входит в состав Anaconda. Описание процесса установки можно найти в первом уроке. Для запуска Jupyter Notebook перейдите в папку Scripts (она находится внутри каталога, в котором установлена Anaconda) и в командной строке наберите:
В результате будет запущена оболочка в браузере.
Примеры работы
Будем следовать правилу: лучше один раз увидеть… Рассмотрим несколько примеров, выполнив которые, вы сразу поймете принцип работы с Jupyter notebook.
Запустите Jupyter notebook и создайте папку для наших примеров, для этого нажмите на New в правой части экрана и выберите в выпадающем списке Folder.
По умолчанию папке присваивается имя “Untitled folder”, переименуем ее в “notebooks”: поставьте галочку напротив имени папки и нажмите на кнопку “Rename”.
Зайдите в эту папку и создайте в ней ноутбук, воспользовавшись той же кнопкой New, только на этот раз нужно выбрать “Python [Root]”.
В результате будет создан ноутбук.
.
Код на языке Python или текст в нотации Markdown нужно вводить в ячейки:
Если это код Python, то на панели инструментов нужно выставить свойство “Code”.
Если это Markdown текст – выставить “Markdown”.
Для начал решим простую арифметическую задачу: выставите свойство “Code”, введите в ячейке “2 + 3” без кавычек и нажмите Ctrl+Enter или Shift+Enter, в первом случае введенный вами код будет выполнен интерпретатором Python, во втором – будет выполнен код и создана новая ячейка, которая расположится уровнем ниже так, как показано на рисунке.
Если у вас получилось это сделать, выполните еще несколько примеров.
Основные элементы интерфейса Jupyter notebook
У каждого ноутбука есть имя, оно отображается в верхней части экрана. Для изменения имени нажмите на его текущее имя и введите новое.
Из элементов интерфейса можно выделить, панель меню:
и рабочее поле с ячейками:
Ноутбук может находиться в одном из двух режимов – это режим правки (Edit mode) и командный режим (Command mode). Текущий режим отображается на панели меню в правой части, в режиме правки появляется изображение карандаша, отсутствие этой иконки значит, что ноутбук находится в командном режиме.
Для открытия справки по сочетаниям клавиш нажмите “Help->Keyboard Shortcuts”
В самой правой части панели меню находится индикатор загруженности ядра Python. Если ядро находится в режиме ожидания, то индикатор представляет собой окружность.
Если оно выполняет какую-то задачу, то изображение измениться на закрашенный круг.
Запуск и прерывание выполнения кода
Если ваша программа зависла, то можно прервать ее выполнение выбрав на панели меню пункт Kernel -> Interrupt.
Для добавления новой ячейки используйте Insert->Insert Cell Above и Insert->Insert Cell Below.
Для запуска ячейки используете команды из меню Cell, либо следующие сочетания клавиш:
Ctrl+Enter – выполнить содержимое ячейки.
Shift+Enter – выполнить содержимое ячейки и перейти на ячейку ниже.
Alt+Enter – выполнить содержимое ячейки и вставить новую ячейку ниже.
Как сделать ноутбук доступным для других людей?
Существует несколько способов поделиться своим ноутбуком с другими людьми, причем так, чтобы им было удобно с ним работать:
- передать непосредственно файл ноутбука, имеющий расширение “.ipynb”, при этом открыть его можно только с помощью Jupyter Notebook;
- сконвертировать ноутбук в html;
- использовать https://gist.github.com/ ;
- использовать http://nbviewer.jupyter.org/.
Вывод изображений в ноутбуке
Печать изображений может пригодиться в том случае, если вы используете библиотеку matplotlib для построения графиков. По умолчанию, графики не выводятся в рабочее поле ноутбука. Для того, чтобы графики отображались, необходимо ввести и выполнить следующую команду:
%matplotlib inline
Пример вывода графика представлен на рисунке ниже.
Магия
Важной частью функционала Jupyter Notebook является поддержка магии. Под магией в IPython понимаются дополнительные команды, выполняемые в рамках оболочки, которые облегчают процесс разработки и расширяют ваши возможности. Список доступных магических команд можно получить с помощью команды
%lsmagic
Для работы с переменными окружения используется команда %env.
Запуск Python кода из “.py” файлов, а также из других ноутбуков – файлов с расширением “.ipynb”, осуществляется с помощью команды %run.
Для измерения времени работы кода используйте %%time и %timeit.
%%time позволяет получить информацию о времени работы кода в рамках одной ячейки.
%timeit запускает переданный ей код 100000 раз (по умолчанию) и выводит информацию среднем значении трех наиболее быстрых прогонах.
Информацию по остальным магическим командам можете найти здесь:
Интересные примеры ноутбуков, в которых довольно полно раскрыты возможности Jupyter Notebook можно найти в ресурсах, перечисленных ниже.
P.S.
Если вам интересна тема анализа данных, то мы рекомендуем ознакомиться с библиотекой Pandas. На нашем сайте вы можете найти вводные уроки по этой теме. Все уроки по библиотеке Pandas собраны в книге “Pandas. Работа с данными”.
IPython и Jupyter Notebook — установка и знакомство
IPython
Эту среду можно назвать продвинутым интерпретатором Python. Если Python — механизм решения задач, то IPython — интерактивная панель управления.
Оболочка IPython является интерактивным интерфейсом для Python и имеет множество синтаксических дополнений к нему.
Есть два варианта использования IPython:
1 . Командная строка IPython
2 . Блокнот IPython
Для установки командной строки IPython требуется выполнить команду менеджера пакетов pip:
После мы просто вводим в командной строке IPython и можем работать с новым интерпретатором:
Jupyter Notebook
Блокнот Jupyter — это браузерный графический интерфейс для IPython.
Для установки, нужно скачать и установить пакет Anaconda с официального сайта .
После установки, находим в пуске нужную вкладку:
и запускаем Jupyter Notebook:
Мы видим файловую систему в которой можно выбрать и открыть нужный файл, а также создать новый.
Создадим новый файл, нажав на кнопку New и выбрав Python 3:
Теперь перед нами открыта интерактивная среда. Разберём некоторые особенности:
In и Out — являются переменными, автоматически отражающие историю.
In — логично, это то место куда мы пишем команды. Объект In представляет собой список отслеживающий очередность команд.
Out — словарь связывающий ввод с выводом.
Не все операции генерируют вывод, таким образом не каждый In породит Out после себя. Например оператор import возвращает None , что никак не влияет на объект Out .
Чтобы запустить код, нужно нажать на кнопку Run и тогда, если текущая строка In имеет вывод, то он будет отражен в строке Out
Напишем несколько строк кода, чтобы показать удобство использования объектов In и Out:
Здесь просто импортировали библиотеку и посчитали синус и косинус числа 2. Ничего необычного.
Как упоминалось ранее, In — список, что показывает данный вывод.
In[0] является заглушкой и содержит пустую строку. Это сделано для того, чтобы In[1] ссылался на первую команду. Ведь как мы помним, индексы списков начинаются с нуля .
Можно вывести и весь словарь Out , в котором ключами являются номера строк, а значения самим выводом.
В вычислениях можно использовать и конкретные значения предыдущих Out просто указывая Out[номер строки] . Ровно так же, как мы обратились бы к значению словаря Out по ключу.
Для того, чтобы перемещаться по истории команд, можно использовать стрелки вверх-вниз в панели управления:
С помощью нажатия на Tab , можно просматривать доступные команды модулей:
Получение предыдущего вывода можно осуществить с помощью нижнего подчеркивания:
Также можно использовать двойные и более подчёркивания для доступа к предыдущим командам:
Но конечно намного удобнее оперировать номерами строк:
Думаю, для начала достаточно, синтаксические фишки рассмотрю в следующие разы.
Установка, запуск и подключение к Jupyter Notebook на удаленном сервере
Jupyter Notebook предоставляет командную оболочку для интерактивных вычислений в виде веб-приложения. Этот инструмент совместим с несколькими языками, включая Python, R, Julia и Scala. Он часто используется для работы с данными, статистического моделирования и машинного обучения.
Jupyter Notebook предоставляет возможность создавать документы, «notebooks». Документы Jupyter Notebook являются разделяемыми, воспроизводимыми исследовательскими документами, которые включают элементы расширенного текста, уравнения, код и их результаты (рисунки, таблицы, интерактивные графики). Их также можно экспортировать в файлы исходного кода, документы HTML или PDF или использовать для создания интерактивных слайд-шоу или веб-страниц.
В этом мануале вы узнаете, как установить и настроить приложение Jupyter Notebook на сервере Ubuntu 18.04 и как подключиться к нему с локального компьютера. Кроме того, мы также рассмотрим, как использовать Jupyter Notebook для запуска кода Python.
Требования
- Сервер Ubuntu 18.04, настроенный согласно этому мануалу.
- Предварительно установленные Python 3, pip и venv. Все инструкции можно найти в мануале Установка Python 3 и настройка среды разработки на сервере Ubuntu 18.04.
- Современный веб-браузер на локальной машине. Он нужен для доступа к Jupyter Notebook.
Кроме того, если ваш локальный компьютер работает под управлением Windows, вам нужно установить на него PuTTY, чтобы в дальнейшем создать SSH-туннель к вашему удаленному серверу. Чтобы скачать и установить PuTTY, следуйте нашему мануалу Вход на сервер через PuTTY (для пользователей Windows).
1: Установка Jupyter Notebook
Поскольку документы используются для написания, запуска и просмотра результатов небольших фрагментов кода, сначала необходимо настроить поддержку языка программирования. Jupyter Notebook использует ядро для конкретного языка (компьютерную программу, которая запускает и анализирует код). Jupyter Notebook поддерживает много ядер для разных языков, по умолчанию используется IPython. В этом мануале мы настроим Jupyter Notebook для запуска кода Python через ядро IPython.
Согласно требованиям у вас должен быть установлен Python 3, pip и виртуальная среда. В этих примерах (как и в мануале по установке Python 3) виртуальная среда называется my_env, но вы можете смело переименовать ее.
Для начала активируйте виртуальную среду:
После этого в командной строке появится префикс – имя вашей среды.
Находясь в виртуальной среде, установите Jupyter Notebook:
python3 -m pip install jupyter
Если установка прошла успешно, вы увидите такой вывод:
. . .
Successfully installed MarkupSafe-1.0 Send2Trash-1.5.0 backcall-0.1.0 bleach-2.1.3 decorator-4.3.0 entrypoints-0.2.3 html5lib-1.0.1 ipykernel-4.8.2 ipython-6.4.0 ipython-genutils-0.2.0 ipywidgets-7.2.1 jedi-0.12.0 jinja2-2.10 jsonschema-2.6.0 jupyter-1.0.0 jupyter-client-5.2.3 jupyter-console-5.2.0 jupyter-core-4.4.0 mistune-0.8.3 nbconvert-5.3.1 nbformat-4.4.0 notebook-5.5.0 pandocfilters-1.4.2 parso-0.2.0 pexpect-4.5.0 pickleshare-0.7.4 prompt-toolkit-1.0.15 ptyprocess-0.5.2 pygments-2.2.0 python-dateutil-2.7.3 pyzmq-17.0.0 qtconsole-4.3.1 simplegeneric-0.8.1 six-1.11.0 terminado-0.8.1 testpath-0.3.1 tornado-5.0.2
Jupyter Notebook был успешно установлен на ваш удаленный сервер. Теперь попробуем запустить приложение.
2: Запуск Jupyter Notebook
Jupyter Notebook должен быть запущен на вашем VPS, чтобы вы могли подключиться к нему с локального компьютера через SSH-туннель и веб-браузер.
Чтобы запустить сервер Jupyter Notebook, введите следующую команду:
После выполнения этой команды вы увидите подобный вывод:
[I 19:46:22.031 NotebookApp] Writing notebook server cookie secret to /home/8host/.local/share/jupyter/runtime/notebook_cookie_secret[I 19:46:22.365 NotebookApp] Serving notebooks from local directory: /home/8host/environments
[I 19:46:22.365 NotebookApp] 0 active kernels
[I 19:46:22.366 NotebookApp] The Jupyter Notebook is running at:
[I 19:46:22.366 NotebookApp] http://localhost:8888/?token=Example_Jupyter_Token_3cadb8b8b7005d9a46ca4d6675
[I 19:46:22.366 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[W 19:46:22.366 NotebookApp] No web browser found: could not locate runnable browser.
[C 19:46:22.367 NotebookApp]
Copy/paste this URL into your browser when you connect for the first time,
to login with a token:
http://localhost:8888/?token=Example_Jupyter_Token_3cadb8b8b7005d9a46ca4d6675&tokenExample_Jupyter_Token_3cadb8b8b7005d9a46ca4d6675
В выводе вы можете заметить предупреждение, что веб-браузер отсутствует: «No web browser». Этого и следует ожидать, так как приложение работает на удаленном сервере, и вы, вероятно, не устанавливали на него веб-браузер. Далее в этом мануале будет рассказано, как подключиться к Notebook на удаленном сервере с помощью SSH-туннелирования. Мы обсудим это в следующем разделе.
На данный момент нужно выйти из Jupyter Notebook, нажав Ctrl+C, затем y, а затем Enter для подтверждения:
Shutdown this notebook server (y/[n])? y
[C 20:05:47.654 NotebookApp] Shutdown confirmed
[I 20:05:47.654 NotebookApp] Shutting down 0 kernels
Затем выйдите из сервера:
Только что вы запустили Jupyter Notebook на своем сервере. Однако чтобы получить доступ к приложению и начать работать с документами, вам необходимо подключиться к приложению с помощью SSH-туннеля и веб-браузера на локальном компьютере.
3: Подключение к серверу по SSH-туннелю
Туннелирование SSH – это простой и быстрый способ подключения к приложению Jupyter Notebook на удаленном сервере. Оболочка Secure shell (более известная как SSH) – это сетевой протокол, который позволяет безопасно подключаться к удаленному серверу по незащищенной сети.
Протокол SSH включает механизм переадресации портов, который позволяет создавать туннели между конкретными портами на сервере и на вашем локальном компьютере. В этом разделе вы узнаете, как туннелировать приложение Jupyter Notebook, работающее на вашем сервере (по умолчанию это порт 8888), на локальную машину.
Метод установки туннеля SSH будет зависеть от операционной системы вашего локального компьютера. Выберите соответствующий подраздел и выполните его.
SSH-туннелирование на Mac или Linux
Если вы используете Mac или Linux, вы можете создать туннель с помощью одной команды.
ssh — это стандартная команда для открытия соединения SSH, но флаг -L в ней позволяет указать, что данный порт на локальном хосте (то есть на вашем локальном компьютере) будет перенаправляться на данный хост и порт на удаленной стороне (в данном случае это ваш сервер). Это означает, что все, что работает по порту 8888 на сервере (в команде этот порт указывается после localhost), будет отображаться по порту 8888 на вашем локальном компьютере (этот порт идет перед localhost).
Чтобы установить SSH-туннель, выполните следующую команду. Вместо порта 8000 укажите любой другой порт (если, например, 8000 используется другим процессом). Рекомендуется использовать номера портов от 8000 и выше, так как эти порты вряд ли будут заняты другими процессами. Не забудьте указать IP-адрес вашего сервера и имя пользователя (не root):
ssh -L 8000:localhost:8888 8host@your_server_ip
Если после выполнения команды не появляется никаких ошибок, вы можете войти на удаленный сервер и активировать виртуальную среду:
В среде запустите Jupyter Notebook:
Чтобы подключиться к Jupyter Notebook, откройте в браузере на локальном компьютере веб-интерфейс Jupyter Notebook по URL-адресу, который начинается с http://localhost:8000.
SSH-туннелирование в Windows через Putty
В системе Windows SSH-туннель можно создать с помощью Putty.
PuTTY – это открытый SSH-клиент для Windows, который можно использовать для подключения к вашему серверу. После загрузки и установки PuTTY на вашем компьютере Windows откройте программу и введите URL или IP-адрес вашего сервера в поле Host Name (or IP address).
Затем нажмите кнопку SSH в нижней части левой панели, чтобы развернуть меню, и нажмите Tunnels. Введите номер локального порта, который будет использоваться для доступа к Jupyter на локальном компьютере. Рекомендуется использовать номера портов от 8000 и выше, так как эти порты вряд ли будут заняты другими процессами. Установите назначение localhost:8888 (где 8888 – это номер порта, на котором работает Jupyter Notebook).
Теперь нажмите кнопку Add, после чего порты должны появиться в списке Forwarded ports.
Затем нажмите кнопку Open, чтобы подключиться к серверу через SSH и туннелировать нужные порты. Если при этом не возникло ошибок, активируйте виртуальную среду:
И запустите Jupyter Notebook:
В браузере перейдите по адресу http://localhost:8000 (или укажите порт, который вы выбрали), чтобы подключиться к экземпляру Jupyter Notebook на сервере.
4: Работа с Jupyter Notebook
При доступе через веб-браузер Jupyter Notebook предоставляет панель инструментов Notebook Dashboard, которая действует как файловый браузер и предоставляет вам интерфейс для создания, редактирования и изучения документов. Это документы с расширением .ipynb, которые заполняются любым количеством отдельных ячеек. Каждая ячейка содержит интерактивный текстовый редактор, который можно использовать для запуска кода или написания текста. Кроме того, документы позволяют писать и выполнять уравнения, а также включают в себя другие мультимедиа, такие как изображения или интерактивные графики. Их можно экспортировать и совместно использовать в различных форматах (.ipyb, .pdf, .py). Чтобы проиллюстрировать некоторые из этих функций, мы создадим файл документа с помощью панели инструментов Notebook Dashboard, запишем простой текст с уравнением и запустим базовый код Python 3.
К этому моменту вы должны были подключиться к серверу через туннель SSH и запустить приложение Jupyter Notebook с вашего сервера. После перехода по адресу http://localhost:8000 вы увидите страницу входа.
В верхнем поле Password or token введите токен, который был показан в выводе после запуска на сервере команды jupyter notebook:
[I 20:35:17.004 NotebookApp] Writing notebook server cookie secret to /run/user/1000/jupyter/notebook_cookie_secret[I 20:35:17.314 NotebookApp] Serving notebooks from local directory: /home/8host
[I 20:35:17.314 NotebookApp] 0 active kernels
[I 20:35:17.315 NotebookApp] The Jupyter Notebook is running at:
[I 20:35:17.315 NotebookApp] http://localhost:8888/?token=Example_Jupyter_Token_3cadb8b8b7005d9a46ca4d6675
[I 20:35:17.315 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[W 20:35:17.315 NotebookApp] No web browser found: could not locate runnable browser.
[C 20:35:17.316 NotebookApp]
. . .
Кроме того, вы можете скопировать этот URL из вывода вашего терминала и вставить его в адресную строку браузера.
В документе Jupyter автоматически отобразятся все файлы и папки, хранящиеся в каталоге, из которого он запущен. Создайте новый файл документа, нажав New, а затем «Python 3» в правом верхнем углу панели инструментов Notebook Dashboard.
Это откроет новый документ. Например, чтобы первая ячейка принимала Markdown, кликните Cell > Cell Type > Markdown в верхней панели навигации. Теперь можно делать записи, используя Markdown, и даже включать уравнения, написанные в LaTeX, помещая их между символами $$. Например, в ячейку с поддержкой Markdown введите следующее:
# Simple Equation
Let us now implement the following equation in Python:
$$ y = x^2$$
where $x = 2$
Чтобы превратить Markdown в форматированный текст, нажмите сочетание клавиш Ctrl + Enter.
Вы можете использовать ячейки markdown, чтобы делать заметки и документировать свой код.
Давайте выполним это простое уравнение и выведем результат на экран. Нажмите Insert > Insert Cell Below, чтобы добавить новую ячейку. Введите следующий код в новой ячейке.
Чтобы запустить код, нажмите Ctrl + Enter. На экране появится результат.
Вот несколько сравнительно простых примеров того, что вы можете сделать с помощью Jupyter Notebook. Но помните – это приложение очень мощное, оно имеет много других, более сложных вариантов использования. Теперь вы можете добавить библиотеки Python, импортировать модули и использовать документы, как и в любой другой среде разработки Python!
Заключение
Теперь вы можете писать воспроизводимый код Python и создавать заметки в Markdown с помощью Jupyter Notebook. Быстрый обзор Jupyter Notebook можно получить прямо из интерфейса, для этого выберите Help > User Interface Tour в верхнем меню навигации.
Если вам интересно узнать о Jupyter Notebook больше, мы рекомендуем изучить документацию Project Jupyter. Кроме того, вы можете научиться программировать на Python 3.
Читайте также:
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.