Пользователи видят интерфейс клиента Jupyter — написанный на CSS, HTML и JavaScript — в браузере на клиентской машине. Клиент связывается с ядром, написанным на Python (или одном из множества других языков), которое выполняет блоки кода и возвращает результат. Содержимое хранится на серверной машине в формате notebook (*.nb) — текст в формате JSON разбит на несколько «клеток», которые могут содержать HTML, Markdown (доступный для прочтения человеком язык разметки; похож на язык, использующийся на вики-страницах), простые заметки или исполняемый код. Сервер может быть локальным (запущен на ноутбуке пользователя) или удаленным, как примеры на сайте https://try.jupyter.org/.
Серверу Jupyter для работы нужна версия Python не ниже 3.3, также он совместим с Python 2.7. Поставляется с наиболее свежими версиями дистрибутивов Python (описаны в разделе «Коммерческие дистрибутивы Python» главы 2), например Canopy и Anaconda, поэтому для этих инструментов не нужно выполнять дополнительную установку, если вы можете компилировать и выполнять сборку кода C в вашей системе, как мы обсуждали в главе 2. Выполнив подготовку, вы можете установить Jupyter из командной строки с помощью pip: $ pip install jupyter
Последние исследования, посвященные использованию Jupyter для обучения (http://bit.ly/jupyter-classroom), показали, что это эффективный и популярный способ создавать интерактивные лекции для учеников, незнакомых с программированием.
Приложения командной строки
Приложения командной строки (также их называют консольными) — это компьютерные программы, предназначенные для использования из текстового интерфейса вроде оболочки (http://en.wikipedia.org/wiki/Shell_(computing)). Они могут быть простыми командами (вроде pep8 или virtualenv) или интерактивными (вроде pip install, pip uninstall или pip freeze) — все они имеют собственные параметры в дополнение к общим параметрам pip. Как правило, все они начинают работу из функции main(). Наш BDFL поделился мнением (http://bit.ly/python-main-functions) о том, что нужно, чтобы написать хорошее консольное приложение.
Мы используем пример вызова pip для перечисления компонентов, которые могут присутствовать в момент вызова приложения командной строки:
Библиотеки, перечисленные в табл. 7.1, предоставляют разные способы анализа аргументов, а также другие полезные инструменты для приложений командной строки.
Как правило, сначала вы должны использовать инструменты стандартной библиотеки Python. Добавлять другие библиотеки в проект можно только в том случае, если в стандартной библиотеке нет нужной вам функциональности.
В следующих разделах представлена более подробная информация о каждом инструменте, перечисленном в табл. 7.1.
Таблица 7.1. Инструменты для командной строки.
Библиотека
Лицензия
Причины использовать
argparse
Лицензия PSF
Находится в стандартной библиотеке.
Предоставляет стандартный способ анализа аргументов и параметров
docopt
Лицензия MIT
Позволяет управлять форматом вспомогательного сообщения.
Анализирует командную строку в соответствии с соглашениями, определенными в стандарте POSIX (http://bit.ly/utility-conventions)
plac
BSD 3-clause
Автоматически генерирует вспомогательное сообщение на основе существующей сигнатуры функции.
Анализирует аргументы командной строки в фоновом режиме, передавая их непосредственно вашей функции
click
BSD 3-clause
Предоставляет декораторы для создания вспомогательного сообщения и анализатора (похож на plac).
Позволяет объединять несколько субкоманд.
Взаимодействует с другими надстройками Flask (click не зависит от Flask, но он изначально был написан для того, чтобы помочь пользователям вместе создавать инструменты для командной строки с помощью разных надстроек для Flask, при этом ничего не разрушая, поэтому уже используется в экосистеме Flask)
clint
Лицензия Internet Software
Consortium (ISC)
Имеет такие возможности форматирования, как изменение цвета, добавление отступов и колоночное отображение текста.
Позволяет выполнить проверку типов для данных, введенных интерактивно (например, с помощью регулярного выражения, а также для целого числа или пути).
Дает прямой доступ к списку аргументов, предоставляя простые инструменты для фильтрации и группирования
cliff
Лицензия Apache 2.0
Предоставляет структурированный фреймворк для крупных проектов Python, имеющих много субкоманд.
Создает интерактивную среду для использования субкоманд без дополнительного кодирования argparse