Tutorial
Настройка Jupyter Notebook с помощью Python 3 в Ubuntu 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 в нижней части левой панели, чтобы расширить меню, а затем нажмите 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.
Если вы хотите узнать больше, ознакомьтесь с нашей серией статей Визуализация временных рядов и прогнозирование.