Введение

Веб-приложение с открытым исходным кодом, Jupyter Notebook, позволяет создавать и обмениваться интерактивными кодом, визуализациями и многим другим. Этот инструмент можно использовать с несколькими языками программирования, включая Python, Julia, R, Haskell и Ruby. Он часто используется для работы с данными, статистическими моделями и машинным обучением.

Из этого обучающего руководства вы узнаете, как выполнить настройку Jupyter Notebook для запуска на сервере с Ubuntu 18.04, а также научитесь подключаться к блокноту и использовать его. Блокноты Jupyter (или просто блокноты) — это документы, генерируемые приложением Jupyter Notebook, которые содержат компьютерный код и форматированные текстовые элементы (параграф, цитаты, изображения, ссылки и т.д.), которые помогают отображать и делиться воспроизводимые разработки.

К концу этого руководства вы сможете запускать код Python 3 с помощью Jupyter Notebook, запущенном на удаленном сервере.

Предварительные требования

jupyter notebook illustration for: Предварительные требования

Для прохождения этого обучающего модуля вам потребуется новый экземпляр сервера Ubuntu 18.04 с базовым брандмауэром и пользователем с привилегиями sudo и без привилегий root. Чтобы узнать, как настроить такой сервер, воспользуйтесь нашим руководством по начальной настройке сервера.

Шаг 1 — Настройка Python

Для начала процесса настройки мы установим зависимости, которые нам потребуется для нашей среды программирования Python, из репозиториев Ubuntu. В Ubuntu 18.04 уже предустановлена версия Python 3.6. Для установки дополнительных компонентов мы немного позднее используем диспетчер пакетов Python pip.

Сначала нам нужно обновить локальный индекс пакетов apt, а затем загрузить и установить пакеты:

				
					
sudo apt update

				
			

Затем установите pip и заголовочные файлы Python, которые используются определенными зависимостями Jupyter:

				
					
sudo apt install python3-pip python3-dev

				
			

Теперь мы можем перейти к настройке виртуальной среды Python, куда мы будем устанавливать Jupyter.

Шаг 2 — Создание виртуальной среды Python для Jupyter

Теперь, когда у нас есть Python 3, а заголовочные файлы и pip готовы к запуску, мы можем создать виртуальную среду Python для управления нашими проектами. Мы установим Jupyter в эту виртуальную среду.

Для этого нам потребуется доступ к virtualenv, который мы можем установить с помощью pip.

Обновите pip и установите пакет с помощью следующей команды:

				
					
sudo -H pip3 install --upgrade pip

sudo -H pip3 install virtualenv

				
			

Флаг -H гарантирует, что политика безопасности устанавливает переменную среды home в домашнюю директорию пользователя.

После установки virtualenv мы можем начать формирование нашей среды. Создайте каталог для файлов нашего проекта и перейдите в этот каталог. Мы назовем ее my_project_dir, но вы должны использовать имя, которое понятно вам и согласуется с тем, над чем вы работаете.

				
					
mkdir ~/<^>my_project_dir<^>

cd ~/<^>my_project_dir<^>

				
			

В директории проекта мы создадим виртуальную среду Python. Для целей данного руководства мы назовем ее my_project_env, но вы должны использовать название, соответствующее вашему проекту.

				
					
virtualenv <^>my_project_env<^>

				
			

Эта команда создаст каталог <^>my_project_env<^> в каталоге <^>my_project_dir<^>. В этот каталог будут установлены локальная версия Python и локальная версия pip. Мы можем использовать ее для установки и настройки изолированной среды Python для Jupyter.

Перед созданием Jupyter нам потребуется активировать виртуальную среду. Для этого можно использовать следующую команду:

				
					
source &lt;^&gt;my_project_env&lt;^&gt;/bin/activate

				
			

Командная строка изменится, показывая, что теперь вы работаете в виртуальной среде Python. Она будет выглядеть примерно так: (<^>my_project_env<^>)<^>user<^>@<^>host<^>:~/<^>my_project_dir<^>$.

Теперь вы можете выполнить установку Jupyter в эту виртуальную среду.

Шаг 3 — Установка Jupyter

При запущенной виртуальной среде установите Jupyter с помощью локального экземпляра pip.

Примечание: если виртуальная среда активна (когда перед командной строкой стоит (my_project_env)), необходимо использовать pip вместо pip3, даже если вы используете Python 3. Копия инструмента в виртуальной среде всегда имеет имя pip вне зависимости от версии Python.

				
					
pip install jupyter

				
			

В данный момент вы успешно установили все программное обеспечение, необходимое для запуска Jupyter. Теперь мы можем запустить сервер Notebook.

Шаг 4 — Запуск Jupyter Notebook

Теперь у вас есть все, что нужно для запуска Jupyter Notebook! Для его запуска воспользуйтесь следующей командой:

				
					
jupyter notebook

				
			

Журнал активности Jupyter Notebook будет выведен в командной строке. При запуске Jupyter Notebook будет использоваться порт с конкретным номером. Первый Notebook, который вы будете запускать, обычно использует порт <^>8888<^>. Чтобы проверить, какой номер порта использует Jupyter, см. вывод команды, которую вы использовали для запуска:

				
					
[secondary_label Output]

[I 21:23:21.198 NotebookApp] Writing notebook server cookie secret to /run/user/1001/jupyter/notebook_cookie_secret

[I 21:23:21.361 NotebookApp] Serving notebooks from local directory: /home/&lt;^&gt;sammy&lt;^&gt;/&lt;^&gt;my_project_dir&lt;^&gt;

[I 21:23:21.361 NotebookApp] The Jupyter Notebook is running at:

[I 21:23:21.361 NotebookApp] http://localhost:&lt;^&gt;8888&lt;^&gt;/?token=&lt;^&gt;1fefa6ab49a498a3f37c959404f7baf16b9a2eda3eaa6d72&lt;^&gt;

[I 21:23:21.361 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

[W 21:23:21.361 NotebookApp] No web browser found: could not locate runnable browser.

[C 21:23:21.361 NotebookApp]



 Copy/paste this URL into your browser when you connect for the first time,

 to login with a token:

 http://localhost:&lt;^&gt;8888&lt;^&gt;/?token=&lt;^&gt;1fefa6ab49a498a3f37c959404f7baf16b9a2eda3eaa6d72&lt;^&gt;

				
			

Если вы запускаете Jupyter Notebook на локальном компьютере (а не на сервере), вы можете перейти к отображаемому URL-адресу для подключения к Jupyter Notebook. Если вы запускаете Jupyter Notebook на сервере, вам нужно будет подключаться к серверу с помощью туннеля SSH, как указано в следующем разделе.

В данный момент вы можете сохранить соединение SSH открытым и поддерживать Jupyter Notebook в рабочем состоянии, или закрыть приложение и снова запустить его после настройки туннеля SSH. Давайте завершим процесс Jupyter Notebook. Мы запустим его снова после настройки туннеля SSH. Чтобы остановить процесс Jupyter Notebook, нажмите CTRL+C, введите Y, а затем ENTER для подтверждения. В результате будет отображен следующий вывод:

				
					
[secondary_label Output]

[C 21:28:28.512 NotebookApp] Shutdown confirmed

[I 21:28:28.512 NotebookApp] Shutting down 0 kernels

				
			

Теперь мы настроим туннель SSH, чтобы получить доступ к Notebook.

Шаг 5 — Подключение к серверу с помощью туннеля SSH

В этом разделе мы узнаем, как подключиться к веб-интерфейсу Jupyter Notebook с помощью туннеля SSH. Поскольку Jupyter Notebook будет работать на конкретном порту на сервере (например, :8888, :8889 и т. д.), туннель SSH позволяет безопасно подключаться к порту сервера.

В следующих двух подразделах описано, как создать туннель SSH в (1) Mac или Linux и в (2) Windows. См. подраздел для вашего локального компьютера.

Туннель SSH в Mac или Linux

Если вы используете Mac или Linux, шаги, которые необходимо выполнить для создания туннеля SSH, аналогичны шагам, которые выполняются при входе на удаленный сервер с помощью SSH, за исключением дополнительных параметров в команде ssh. В этом подразделе будут показаны дополнительные параметры, необходимые команде ssh для успешного создания туннеля.

Создание туннелей SSH может быть осуществлено с помощью следующей команды SSH, которую необходимо ввести в новом окне локальной командной строки:

				
					
[environment local]

ssh -L &lt;^&gt;8888&lt;^&gt;:localhost:&lt;^&gt;8888&lt;^&gt; &lt;^&gt;your_server_username&lt;^&gt;@&lt;^&gt;your_server_ip&lt;^&gt;

				
			

Команда ssh открывает соединение SSH, но -L указывает, что данный порт на локальном хосте (клиент) будет отправляться на заданный хост и порт на удаленном конце (сервер). Это значит, что бы ни было запущено на втором порту (например, <^>8888<^>) на сервере, оно появится на первом порту (например, <^>8888<^>) на локальном компьютере.

Вы можете изменить порт <^>8888<^> на один из ваших портов, чтобы избежать использования порта, который уже используется другим процессом.

<^>server_username<^> — это ваше имя пользователя (например, <^>sammy<^>) на сервере, который вы создали, а <^>your_server_ip<^> — это IP-адрес вашего сервера.

Например, для имени пользователя <^>sammy<^> и адреса сервера <^>203.0.113.0<^>, команда будет выглядеть следующим образом:

				
					
[environment local]

ssh -L &lt;^&gt;8888&lt;^&gt;:localhost:&lt;^&gt;8888&lt;^&gt; &lt;^&gt;sammy&lt;^&gt;@&lt;^&gt;203.0.113.0&lt;^&gt;

				
			

Если после запуска команды ssh -L не появится ошибок, вы можете перейти в среду программирования и запустить Jupyter Notebook:

				
					
jupyter notebook

				
			

Вы получите вывод с URL-адресом. В веб-браузере на локальном компьютере откройте веб-интерфейс Jupyter Notebook с URL-адресом, который начинается с http://localhost:8888. Убедитесь, что номер маркера включен, либо введите строку с номером маркера при запросе в http://localhost:8888.

Создание туннелей SSH с использованием Windows и PuTTY

Если вы используете Windows, вы можете создать туннель SSH с помощью Putty.

Введите URL-адрес сервера или IP-адрес в качестве имени хоста, как показано ниже:

Далее нажмите SSH в нижней части левой панели, чтобы расширить меню, а затем нажмите Tunnels (Туннели). Введите локальный номер порта, который вы хотите использовать для доступа к Jupyter на локальном компьютере. Выберите <^>8000<^> или выше, чтобы избежать использования портов, которые уже используются другими службами, и задайте назначение localhost: <^>8888<^>, где <^>:8888<^> — номер порта, на котором запущен Jupyter Notebook.

Затем нажмите кнопку Add (Добавить), после чего порты должны появиться в списке Forwarded ports (Перенаправляемые порты):

После этого нажмите кнопку Open (Открыть) для подключения к серверу через SSH и туннель с нужными портами. Перейдите на http://localhost:<^>8000<^> (или любой порт на выбор) в веб-браузере для подключения к Jupyter Notebook, запущенному на сервере. Убедитесь, что номер маркера включен, либо введите строку с номером маркера при запросе в http://localhost:8000.

Шаг 6 — Использование Jupyter Notebook

В этом разделе рассматриваются базовые принципы использования Jupyter Notebook. Если у вас нет запущенного Jupyter Notebook, запустите его с помощью команды jupyter notebook.

Теперь вы должны быть подключены к нему с помощью браузера. Jupyter Notebook — это очень мощный инструмент с множеством функций. В этом разделе будет описан ряд базовых функций, необходимых для начала использования Notebook. Jupyter Notebook будет отображать все файлы и папки в директории, в которой он запущен, поэтому, если вы работаете над проектом, убедитесь, что вы можете запустить его из директории проекта.

Чтобы создать новый файл Notebook, выберите New (Новый) > Python 3 в выпадающем меню в верхнем правом углу:

В результате откроется Notebook. Теперь мы можем запустить код Python в ячейке или изменить ячейку на разметку. Например, измените первую ячейку, чтобы она могла принимать разметку, нажмите Cell (Ячейка) > Cell Type (Тип ячейки) > Markdown (Разметка) в верхней панели навигации. Теперь мы можем добавлять записи с помощью разметки и даже включать уравнения, созданные в LaTeX, поместив их между символами $$. Например, введите в ячейку следующее после ее переключения на разметку:

				
					
# First Equation



Let us now implement the following equation:

$$ y = x^2$$



where $x = 2$

				
			

Чтобы преобразовать разметку в расширенный текстовый формат, нажмите CTRL + ENTER, и получите следующий результат:

Вы можете использовать ячейки разметки для заметок и документирования программного кода. Давайте реализуем это уравнение и распечатаем результат. Нажмите на верхнюю ячейку, а затем нажмите ALT+ENTER чтобы добавить ячейку ниже. Введите в новую ячейку следующий код.

				
					
x = 2

y = x**2

print(y)

				
			

Для запуска кода нажмите CTRL+ENTER. Вы получите следующие результаты:

Теперь вы можете импортировать модули и использовать Notebook, как и любую другую среду разработки Python!

Заключение

Поздравляем! Теперь вы можете писать воспроизводимый код Python и записи в Markdown с помощью Jupyter Notebook. Для быстрого ознакомления с интерфейсом Jupyter Notebook выберите Help (Справка) > User Interface Tour (Знакомство с пользовательским интерфейсом) в верхнем меню навигации.

Здесь вы можете запустить проект анализа данных и визуализации, ознакомившись со статьей Анализ данных и визуализация с pandas и Jupyter Notebook в Python 3.

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