Введение
Качественная документация — это не просто дополнение, а основа успешного проекта. Она помогает новым пользователям разобраться с API, ускоряет разработку и облегчает поддержку. Sphinx – генерация документации — это мощный инструмент, который автоматизирует создание и сборку документации из исходного кода Python.
Sphinx используется для официальной документации Python, NumPy, Django и многих других проектов. Он поддерживает как ручное написание, так и автоматическую генерацию документации из docstring.
Установка и начальная настройка
Установка Sphinx:
Инициализация документации:
Выберите опции: название проекта, автор, формат (reStructuredText), путь к исходникам и др. После этого появится структура:
Структура проекта документации
-
conf.py
— основной конфигурационный файл -
index.rst
— начальная точка документации (оглавление) -
_build/
— каталог с готовой документацией (HTML, PDF и т.д.) -
_static/
,_templates/
— папки для стилей и шаблонов
Автоматическое документирование Python-кода
Подключите расширение:
Добавьте путь к модулю:
Создайте файл API-документации:
Это создаст .rst
файлы для всех модулей.
Работа с reStructuredText (reST)
Пример синтаксиса:
Интеграция с Markdown и MyST
Если вы предпочитаете Markdown, установите:
Добавьте в conf.py
:
Теперь можно использовать .md
файлы наравне с .rst
.
Темы оформления и кастомизация
Установка популярной темы:
В conf.py
:
Вы можете изменить:
-
Цветовую схему
-
Шрифты
-
Логотипы
-
Шаблоны навигации
Модули и расширения Sphinx
Рекомендуемые расширения:
-
autodoc
— документация из docstrings -
napoleon
— поддержка Google/NumPy-style docstrings -
viewcode
— добавление ссылок на исходный код -
intersphinx
— ссылки на внешние документации
Пример:
Связь с внешними библиотеками
Теперь можно делать ссылки на внешние API:
Сборка документации
Сборка HTML:
Сборка PDF:
Для Windows:
Или с помощью sphinx-build
:
Автоматизация и Makefile
Файл Makefile
позволяет автоматизировать сборку и упрощает команды. Используйте:
-
make clean
— очистка сборки -
make html
— создание HTML -
make latexpdf
— создание PDF через LaTeX
Публикация документации
ReadTheDocs
-
Зарегистрируйтесь на readthedocs.org
-
Подключите репозиторий
-
Убедитесь, что в проекте есть
requirements.txt
сsphinx
-
ReadTheDocs сам найдёт
conf.py
и соберёт документацию
Альтернативы
-
GitHub Pages: загрузите
docs/_build/html
в веткуgh-pages
-
Netlify или Vercel: подключите как SPA/статический сайт
Интеграция с CI/CD
GitHub Actions
Sphinx и Docstrings: Google/NumPy стиль
Подключите sphinx.ext.napoleon
и пишите docstring в формате:
Google style:
NumPy style:
Советы по структуре и организации
-
Разделите документацию на модули
-
Используйте
toctree
для навигации -
Создайте
glossary
,faq
,changelog
при необходимости -
Используйте автосодержание:
Часто задаваемые вопросы (FAQ)
1. Что такое Sphinx?
Инструмент генерации документации из исходного кода Python и других языков.
2. Можно ли использовать Markdown?
Да, через myst-parser
.
3. Как подключить автогенерацию?
С помощью sphinx.ext.autodoc
и sphinx-apidoc
.
4. Как изменить тему оформления?
Установите другую тему и укажите её в conf.py
.
5. Можно ли опубликовать документацию онлайн?
Да, через ReadTheDocs, GitHub Pages, Netlify и др.
6. Как интегрировать с CI/CD?
Через GitHub Actions или GitLab CI — сборка и публикация документации возможны автоматически.
Полный справочник по работе с Sphinx
— системой генерации документации для Python
Установка
Для генерации PDF (опционально):
Быстрый старт
Этот интерактивный скрипт создаёт базовую структуру проекта:
Команды сборки
Команда | Назначение |
---|---|
make html |
Сборка HTML-документации. |
make latexpdf |
Сборка PDF через LaTeX. |
make epub |
Сборка ePub. |
sphinx-build -b html . _build/html |
Ручной запуск. |
Подключение автодокументации
1. Установи расширения:
2. В conf.py
добавь:
-
autodoc
: позволяет генерировать документацию изdocstrings
. -
napoleon
: поддержка Google/NumPy-style docstrings.
3. В index.rst
добавь:
Документация из docstring
Пример Python-кода:
Sphinx извлечёт описание и сгенерирует HTML.
Поддержка Markdown
Установи расширение:
В conf.py
:
Использование тем
Установка популярной темы:
В conf.py
:
Полезные расширения
Расширение | Назначение |
---|---|
sphinx.ext.autodoc |
Документация из docstrings. |
sphinx.ext.napoleon |
Поддержка Google и NumPy-style docstrings. |
sphinx.ext.viewcode |
Ссылки на исходный код. |
sphinx.ext.intersphinx |
Межпроектные ссылки. |
myst_parser |
Поддержка Markdown. |
sphinx_copybutton |
Кнопка "копировать" в примерах кода. |
sphinx_autodoc_typehints |
Типизация в документации. |
Read the Docs
-
Создай репозиторий с папкой
docs/
. -
Зарегистрируй проект на readthedocs.org.
-
Автоматическая сборка документации при push'е на GitHub.
Пример структуры с автодокументацией
В modules.rst
: