pydoc — Генератор документации и интерактивная справочная система


Модуль pydoc автоматически генерирует документацию из Python модулей. Документация может быть представлена в виде страниц текста на консоли, передана в веб-браузер или сохранена в HTML файлы.

Для модулей, классов, функций и методов отображаемая документация выводится из строки документации (т. е. атрибута __doc__) объекта и рекурсивно из его документируемых членов. Если строки документации нет, pydoc пытается получить описание из блока строк комментариев чуть выше определения класса, функции или метода в исходном файле или в начале модуля (см. inspect.getcomments()).

Встроенная функция help() вызывает интерактивную справочную систему в интерактивном интерпретаторе, который использует pydoc для создания своей документации в виде текста на консоли. Ту же текстовую документацию можно также просмотреть вне интерпретатора Python, запустив pydoc как скрипт в командной строке операционной системы. Например, выполнение:

pydoc sys

в приглашении оболочки отобразит документацию по модулю sys в стиле, аналогичном страницам руководства, отображаемым командой Unix man. Аргументом pydoc может быть имя функции, модуля или пакета или ссылка с точкой на класс, метод или функцию внутри модуля или модуля в пакете. Если аргумент pydoc выглядит как путь (т. е. содержит разделитель пути для вашей операционной системы, такой как косая черта в Unix) и ссылается на существующий исходный файл Python, то для этого файла создаётся документация.

Примечание

Чтобы найти объекты и их документацию, pydoc импортирует модули, которые необходимо задокументировать. Следовательно, в этом случае будет выполняться любой код на уровне модуля. Используйте защиту if __name__ == '__main__':, чтобы выполнять код только тогда, когда файл вызывается как сценарий, а не просто импортируется.

При выводе на консоль pydoc пытается разбить вывод на страницы для облегчения чтения. Если установлена переменная среды PAGER, pydoc будет использовать её значение в качестве программы разбивки на страницы.

Указание флага -w перед аргументом приведёт к тому, что HTML-документация будет записана в файл в текущем каталоге вместо отображения текста на консоли.

Указание флага -k перед аргументом приведёт к поиску в строках синопсиса всех доступных модулей, заданных в качестве ключевого аргумента, опять же аналогично команде Unix man. Строка синопсиса модуля — это первая строка его строки документации.

Вы также можете использовать pydoc для запуска HTTP-сервера на локальном компьютере, который будет предоставлять документацию посещающим веб-браузерам. pydoc -p 1234 запустит HTTP-сервер на порту 1234, что позволит вам просматривать документацию по адресу http://localhost:1234/ в предпочитаемом веб-браузере. Указание 0 в качестве номера порта выберет произвольный неиспользуемый порт.

pydoc -n <hostname> запустит сервер, прослушивающий данное имя хоста. По умолчанию имя хоста — «localhost», но если вы хотите, чтобы сервер был доступен с других компьютеров, вы можете изменить имя хоста, на которое отвечает сервер. Во время разработки это особенно полезно, если вы хотите запустить pydoc из контейнера.

pydoc -b запустит сервер и дополнительно откроет в веб-браузере индексную страницу модуля. У каждой обслуживаемой страницы есть панель навигации вверху. Данная панель содержит следующие элементы: Get — предоставляет помощь по отдельному элементу, Search — ищет модули по ключевому слову в строке краткого описания, а также предоставляет переход на страницы Module index, Topics и Keywords.

Когда pydoc создаёт документацию, он использует текущую среду и путь для поиска модулей. Таким образом, вызов pydoc spam документирует именно ту версию модуля, которую вы получили бы, если бы запустили интерпретатор Python и набрали import spam.

Предполагается, что документация модулей для основных модулей находится в https://docs.python.org/X.Y/library/, где X и Y — это основной и дополнительный номера версий интерпретатора Python. Это можно переопределить, задав для переменной среды PYTHONDOCS другой URL-адрес или локальный каталог, содержащий страницы справочного руководства библиотеки.

Изменено в версии 3.2: Добавлен параметр -b.

Изменено в версии 3.3: Был удален параметр командной строки -g.

Изменено в версии 3.4: pydoc теперь использует inspect.signature() вместо inspect.getfullargspec() для извлечения информации о сигнатуре из вызываемых объектов.

Изменено в версии 3.7: Добавлен параметр -n.