Почему не работает опция –templatedir для sphinx-apidoc так, как ожидалось?

Вопрос или проблема

Я пытаюсь настроить ./docs/conf.py, чтобы упростить управление документацией, поэтому я выполнил следующую команду:

sphinx-apidoc -F -o "./docs" --templatedir=./templates "."

Я разместил следующий файл conf.py_t в каталоге ./templates, но опция --templatedir не работает так, как ожидалось. (Я проверил сгенерированный файл ./docs/conf.py, и он отличается от шаблонного файла в ./templates/conf.py_t. Конечно, я каждый раз удаляю каталог ./docs перед выполнением этой команды).

Не могли бы вы помочь мне понять, как решить эту проблему?
Спасибо за сотрудничество.

Вот детали проблемы.
Спасибо за вашу помощь.

  • ОС: Windows

  • Оболочка: PowerShell

  • Среда Python:

    • Miniconda: 24.1.2
    • Python: 3.12.2
  • Версия Sphinx: 8.1.3

  • результат выполнения

Создание файла C:\Users\username\Downloads\test\docs\conf.py.
Создание файла C:\Users\username\Downloads\test\docs\index.rst.
Создание файла C:\Users\username\Downloads\test\docs\Makefile.
Создание файла C:\Users\username\Downloads\test\docs\make.bat.

это означает, что каждый файл создается без сообщения об ошибке. (языковые настройки — японский)


Содержимое файла conf.py_t

#hogehoge
#hogehoge
#hogehoge
#hogehoge
#hogehoge
#hogehoge
#hogehoge
# Файл конфигурации для сборщика документации Sphinx.
# 
# Этот файл содержит только выбор самых распространенных опций. Полный
# список смотрите в документации:
# https://www.sphinx-doc.org/en/master/usage/configuration.html

import os
import sys
sys.path.insert(0, os.path.abspath('../'))

# -- Информация о проекте -----------------------------------------------------

project="{{ project_name }}"
copyright="{{ copyright_year }}, {{ author }}"
author="{{ author }}"

# Полная версия, включая тэги alpha/beta/rc
release="{{ version }}"

# -- Общая конфигурация ---------------------------------------------------

extensions = [
    'sphinx.ext.autodoc',
    'sphinx.ext.napoleon',
    'sphinx.ext.viewcode'
]

templates_path = ['_templates']
exclude_patterns = []

# -- Опции для HTML-вывода ---------------------------------------------------

html_theme="alabaster"
html_static_path = ['_static']

Содержимое сгенерированного файла ./docs/conf.py

# Файл конфигурации для сборщика документации Sphinx.
#
# Полный список встроенных значений конфигурации см. в документации:
# https://www.sphinx-doc.org/en/master/usage/configuration.html

# -- Информация о проекте -----------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information

project="test"
copyright="2024, Author"
author="Author"

# -- Общая конфигурация ---------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration

extensions = [
    'sphinx.ext.autodoc',
    'sphinx.ext.viewcode',
    'sphinx.ext.todo',
]

templates_path = ['_templates']
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']

language="en"

# -- Опции для HTML-вывода -------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output

html_theme="alabaster"
html_static_path = ['_static']

# -- Опции для расширения todo ----------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/extensions/todo.html#configuration

todo_include_todos = True

Примечание: Сгенерированный файл conf.py отличается от шаблонного файла conf.py_t, и я не знаю, почему шаблон не применяется.

Ответ или решение

Когда вы сталкиваетесь с проблемой, связанной с использованием опции --templatedir в команде sphinx-apidoc, важно учитывать несколько факторов, которые могут влиять на ожидаемое поведение. Давайте подробно разберем вашу ситуацию и возможные причины, по которым шаблон не применяется как ожидается.

1. Структура каталогов и пути

Вы упомянули о том, что вы используете команду:

sphinx-apidoc -F -o "./docs" --templatedir=./templates "."

Здесь ключевыми моментами являются:

  • Путь к папке шаблонов --templatedir=./templates.
  • Вызываемая команда должна находиться в правильном контексте относительно рабочих каталогов.

Убедитесь, что, выполняя команду, вы находитесь в каталоге, который содержит как templates, так и каталоги для создаваемой документации. Путь к директории ./templates должен быть абсолютным или относительным по отношению к текущему рабочему каталогу.

2. Формат шаблона

Вы также предоставили файл шаблона conf.py_t. Убедитесь, что этот файл действительно соответствует стандартным требованиям для файлов конфигурации Sphinx. Например, проверьте на наличие всех необходимых секций и корректный синтаксис.

3. Параметры команды sbdpd

Флаг -F (или --full) создает дополнительную структуру документации, включая index.rst и другие вспомогательные файлы. Однако стоит знать, что при попытке применить произвольные шаблоны для настройки конфигурационного файла, Sphinx не всегда может сработать как задумано, поскольку в зависимости от версии Sphinx могут быть изменения в поддерживаемых шаблонах.

4. Версия Sphinx

Согласно вашему описанию, вы используете Sphinx версии 8.1.3. Возможно, вы столкнулись с изменениями или ограничениями в этой версии. Проверьте документацию Sphinx, чтобы выяснить, есть ли изменения, касающиеся работы с шаблонами в этой версии.

5. Логирование и отладка

Если ни одно из вышеупомянутого не решает вашу проблему, вам следует включить режим отладки, чтобы увидеть, какие операции проводит sphinx-apidoc. Вы можете запустить команду с флагом -vv (двойное "v" для подробного вывода), чтобы увидеть расширенную информацию о процессе генерации.

Заключение

Эти шаги должны помочь вам разобраться с проблемой применения шаблона в sphinx-apidoc. Если проблема не решается, рекомендуем обратиться к сообществу Sphinx с конкретными примерами и ошибками для получения более детального анализа. Удачи в настройке вашей документации!

Оцените материал
Добавить комментарий

Капча загружается...