Jupyter Notebook — веб-приложение с открытым исходным кодом, позволяющее создавать интерактивный код, визуализации и другие элементы и делиться ими. Этот инструмент можно использовать с несколькими языками программирования, включая Python, Julia, R, Haskell и Ruby. Он часто используется для работы с данными, статистическими моделями и машинным обучением.
Блокноты Jupyter (или просто блокноты) — это документы, генерируемые приложением Jupyter Notebook, которые содержат компьютерный код и форматированные текстовые элементы (параграф, цитаты, изображения, ссылки и т.д.), которые помогают отображать и делиться воспроизводимые разработки. Они могут стать отличным инструментом для презентаций, основанных на данных или программном коде, а также хорошим средством для преподавания.
В этом обучающем модуле мы расскажем о настройке запуска Jupyter Notebook на сервере Ubuntu 20.04 и продемонстрируем процедуры подключения и использования блокнотов с локального компьютера через туннели. К концу этого руководства вы сможете запускать код Python 3 с помощью Jupyter Notebook, запущенном на удаленном сервере.
Для прохождения этого обучающего модуля вам потребуется новый экземпляр сервера Ubuntu 20.04 с базовым брандмауэром и пользователем с привилегиями sudo и без привилегий root. Чтобы узнать, как настроить такой сервер, воспользуйтесь нашим руководством по начальной настройке сервера.
Для начала процесса настройки мы установим зависимости, которые нам потребуется для нашей среды программирования Python, из репозиториев Ubuntu. В Ubuntu 20.04 предустанавлен Python 3. Немного позднее мы используем диспетчер пакетов Python pip для установки дополнительных компонентов.
Сначала нам нужно обновить локальный индекс пакетов apt
, а затем загрузить и установить пакеты:
- sudo apt update
Затем установите pip и заголовочные файлы Python, которые используются определенными зависимостями Jupyter:
- sudo apt install python3-pip python3-dev
Теперь мы можем перейти к настройке виртуальной среды 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 в виртуальную среду.
При запущенной виртуальной среде установите Jupyter с помощью локального экземпляра pip.
Примечание: если виртуальная среда активна (когда перед командной строкой стоит (my_project_env
)), необходимо использовать pip
вместо pip3
, даже если вы используете Python 3. Копия инструмента в виртуальной среде всегда имеет имя pip
вне зависимости от версии Python.
- pip install jupyter
В данный момент вы успешно установили все программное обеспечение, необходимое для запуска 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.
В этом разделе мы покажем, как подключиться к веб-интерфейсу Jupyter Notebook с помощью туннеля SSH. Поскольку Jupyter Notebook будет работать на конкретном порту на сервере (например, :8888
, :8889
и т. д.), туннель SSH позволяет безопасно подключаться к порту сервера.
В следующих двух подразделах описано, как создать туннель SSH в (1) Mac, Linux или (2) Windows. См. подраздел для вашего локального компьютера.
Если вы используете локальный компьютер под управлением 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
.
Если вы используете 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
.
В этом разделе описываются основы использования 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.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!