Вступление
Веб-приложение с открытым исходным кодомJupyter Notebook позволяет создавать и совместно использовать интерактивный код, визуализации и многое другое. Этот инструмент может использоваться с несколькими языками программирования, включая Python, Julia, R, Haskell и Ruby. Он часто используется для работы с данными, статистического моделирования и машинного обучения.
Из этого туториала Вы узнаете, как настроить Jupyter Notebook для запуска с сервера Ubuntu 18.04, а также узнаете, как подключиться и использовать ноутбук. Записные книжки Jupyter (или просто Записные книжки) - это документы, выпускаемые приложением Jupyter Notebook, которые содержат как компьютерный код, так и элементы форматированного текста (абзацы, уравнения, рисунки, ссылки и т. Д.), Которые помогают представлять и распространять воспроизводимые исследования.
К концу этого руководства вы сможете запускать код Python 3 с помощью Jupyter Notebook на удаленном сервере.
Предпосылки
Чтобы выполнить это руководство, у вас должен быть новый экземпляр сервера Ubuntu 18.04 с базовым межсетевым экраном и пользователем без полномочий root с настроенными привилегиями sudo. Вы можете узнать, как это настроить, запустив нашinitial server setup tutorial.
[[step-1 -—- set-up-python]] == Шаг 1. Настройка Python
Чтобы начать процесс, мы установим зависимости, которые нам нужны для нашей среды программирования Python, из репозиториев Ubuntu. Ubuntu 18.04 поставляется с предустановленной Python 3.6. Мы будем использовать pip менеджера пакетов Python для установки дополнительных компонентов чуть позже.
Сначала нам нужно обновить локальный индекс пакетаapt
, а затем загрузить и установить пакеты:
sudo apt update
Затем установите pip и заголовочные файлы Python, которые используются некоторыми зависимостями Jupyter:
sudo apt install python3-pip python3-dev
Теперь мы можем перейти к настройке виртуальной среды Python, в которую мы будем устанавливать Jupyter.
[[step-2 -—- create-a-python-virtual-environment-for-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 в эту виртуальную среду.
[[step-3 -—- install-jupyter]] == Шаг 3. Установите Jupyter
Когда ваша виртуальная среда активна, установите Jupyter с локальным экземпляром pip.
[.note] #Note: Когда виртуальная среда активирована (когда перед приглашением стоит(my_project_env)
), используйтеpip
вместоpip3
, даже если вы используете Python 3. Копия инструмента в виртуальной среде всегда называетсяpip
, независимо от версии Python.
#
pip install jupyter
К этому моменту вы успешно установили все программное обеспечение, необходимое для запуска Jupyter. Теперь мы можем запустить сервер ноутбука.
[[step-4 -—- run-jupyter-notebook]] == Шаг 4. Запустите Jupyter Notebook
Теперь у вас есть все необходимое для запуска ноутбука Jupyter! Чтобы запустить его, выполните следующую команду:
jupyter notebook
Журнал действий Jupyter Notebook будет распечатан на терминале. Когда вы запускаете Jupyter Notebook, он работает с определенным номером порта. Первый запускаемый вами ноутбук обычно будет использовать порт8888
. Чтобы проверить конкретный номер порта, на котором работает Jupyter Notebook, обратитесь к выводу команды, использованной для его запуска:
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-туннель, чтобы получить доступ к ноутбуку.
[[step-5 -—- connect-to-the-server-using-ssh-tunneling]] == Шаг 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 [email protected]
Если после выполнения команды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
.
[[step-6 -—- using-jupyter-notebook]] == Шаг 6 - Использование Jupyter Notebook
В этом разделе рассматриваются основы использования ноутбука Jupyter. Если у вас еще не запущен Jupyter Notebook, запустите его с помощью командыjupyter notebook
.
Теперь вы должны быть подключены к нему с помощью веб-браузера. Jupyter Notebook - очень мощный инструмент с множеством функций. В этом разделе описываются некоторые основные функции, которые помогут вам начать пользоваться ноутбуком. Jupyter Notebook покажет все файлы и папки в каталоге, из которого он запущен, поэтому, когда вы работаете над проектом, обязательно запустите его из каталога проекта.
Чтобы создать новый файл записной книжки, выберитеNew>Python 3 в правом верхнем раскрывающемся меню:
Это откроет записную книжку. Теперь мы можем запустить код Python в ячейке или изменить ячейку на уценку. Например, измените первую ячейку, чтобы принять Markdown, щелкнувCell>Cell Type>Markdown на верхней панели навигации. Теперь мы можем писать заметки с использованием 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
. Вы получите следующие результаты:
Теперь у вас есть возможностьimport modules и использовать Блокнот так же, как и в любой другой среде разработки Python!
Заключение
Поздравляем! Теперь вы сможете писать воспроизводимый код Python и заметки в Markdown, используя Jupyter Notebook. Чтобы получить быстрый обзор Jupyter Notebook из интерфейса, выберитеHelp>User Interface Tour в верхнем меню навигации, чтобы узнать больше.
Отсюда вы можете начать проект анализа и визуализации данных, прочитавData Analysis and Visualization with pandas and Jupyter Notebook in Python 3.
Если вам интересно узнать больше, вы можете прочитать нашу серию статей оTime Series Visualization and Forecasting.