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

Исходный код: Lib/pydoc.py.


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

Для модулей, классов, функций и методов отображаемая документация берется из docstring (т.е. атрибута __doc__) объекта и рекурсивно его документируемых членов. Если docstring отсутствует, 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 запустит сервер и дополнительно откроет веб-браузер на страницу индекса модуля. Каждая обслуживаемая страница имеет навигационную панель в верхней части, где вы можете Получить помощь по отдельному элементу, Поискать все модули с ключевым словом в строке синопсиса, а также перейти на страницы Индекс модуля, Топики и Ключевые слова.

Когда 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.

Вернуться на верх