Tutorial

Настройка Jupyter Notebook с помощью Python 3 в Ubuntu 18.04

PythonDevelopmentData AnalysisUbuntu 18.04

Введение

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

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

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

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

Для прохождения этого обучающего модуля вам потребуется новый экземпляр сервера 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 my_project_env/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, см. вывод команды, которую вы использовали для запуска:

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/sammy/my_project_dir [I 21:23:21.361 NotebookApp] The Jupyter Notebook is running at: [I 21:23:21.361 NotebookApp] http://localhost:8888/?token=1fefa6ab49a498a3f37c959404f7baf16b9a2eda3eaa6d72 [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:8888/?token=1fefa6ab49a498a3f37c959404f7baf16b9a2eda3eaa6d72

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

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

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, которую необходимо ввести в новом окне локальной командной строки:

  • ssh -L 8888:localhost:8888 your_server_username@your_server_ip

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

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

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

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

  • ssh -L 8888:localhost:8888 sammy@203.0.113.0

Если после запуска команды 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

Далее нажмите 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 в выпадающем меню в верхнем правом углу:

Создайте новый блокнот 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.

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

Creative Commons License