Sphinx неправильно отображает документацию по коду

Проблема:

Sphinx не отображает документированный код - только оглавление. Я изолировал это до того, что Sphinx не генерирует файлы * .rst для каждого документированного файла * .py при вызове sphinx-apidoc.

Примечание.

Я использую vscode с autodoc, формат autodoc установлен на sphinx в файле настроек vscode.

Мое дерево проекта:

.
└── MNF
    ├── classes
    │   ├── file_parser.py
    │   └── README.txt
    ├── configs
    │   ├── datasets.json
    │   └── README.txt
    ├── data_in
    │   └── README.txt
    ├── data_out
    │   └── README.txt
    ├── LICENSE
    ├── models
    │   └── README.txt
    ├── notebooks
    │   ├── eda.ipynb
    │   └── README.txt
    ├── packages.microsoft.gpg
    ├── papers
    │   ├── conda-cheatsheet.pdf
    │   ├── dejuan2013.pdf
    │   ├── Git-Cheatsheet.pdf
    │   └── READE.txt
    ├── plots
    │   └── README.txt
    ├── __pycache__
    │   └── file_parser.cpython-39.pyc
    ├── README.md
    ├── src
    │   └── README.txt
    ├── test_branch.txt
    ├── test_main.txt
    ├── tests
    │   └── README.txt
    └── utilities
        └── README.txt

Кодекс интересов:

class FileParser:
    """File parser
    """
    def __init__(self, root_path="../data_in/"):
        """
        :param root_path: root path to search isHiddenWithinTree, defaults to "../data_in/"
        :type root_path: str, optional
        """
        self.root_path = root_path

    def get_root_path(self):
        """Basic getter

        :return: root path
        :rtype: string
        """
        return self.root_path
    

Шаги, часть 1:

  • mkdir docs
  • cd документы
  • sphinx-quickstart (отдельный исходный файл, добавлено расширение autodoc)

изменить conf.py:

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

to

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

Измените index.rst, чтобы включить модули:

===============================

.. toctree::
   :maxdepth: 2
   :caption: Contents:

   modules



Indices and tables
==================

* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`

Шаги, часть 2:

В docs dir

  • запустите sphinx-apidoc -o source / ..
  • сделать html

Новое дерево документов

.
├── docs
│   ├── build
│   │   ├── doctrees
│   │   │   ├── environment.pickle
│   │   │   ├── index.doctree
│   │   │   └── modules.doctree
│   │   └── html
│   │       ├── genindex.html
│   │       ├── index.html
│   │       ├── modules.html
│   │       ├── objects.inv
│   │       ├── search.html
│   │       ├── searchindex.js
│   │       ├── _sources
│   │       │   ├── index.rst.txt
│   │       │   └── modules.rst.txt
│   │       └── _static
│   │           ├── ajax-loader.gif
│   │           ├── alabaster.css
│   │           ├── basic.css
│   │           ├── comment-bright.png
│   │           ├── comment-close.png
│   │           ├── comment.png
│   │           ├── custom.css
│   │           ├── doctools.js
│   │           ├── down.png
│   │           ├── down-pressed.png
│   │           ├── file.png
│   │           ├── jquery-3.2.1.js
│   │           ├── jquery.js
│   │           ├── minus.png
│   │           ├── plus.png
│   │           ├── pygments.css
│   │           ├── searchtools.js
│   │           ├── underscore-1.3.1.js
│   │           ├── underscore.js
│   │           ├── up.png
│   │           ├── up-pressed.png
│   │           └── websupport.js

файл modules.rst:

git_mnf
=======

.. toctree::
   :maxdepth: 4

Проблема 1:

Файл file_parser.rst не создан.

Проблема 2:

На странице index.html нет документации

введите описание изображения здесь

Справка: я теряюсь с этим. Есть идеи, почему моя документация для FileParse.py не отображается?

Версии:

  • Python 3.9.2
  • сфинкс 1.6.7
  • vscode 1.54.3
  • система: mac os
  • браузер: firefox

person Dean    schedule 20.03.2021    source источник
comment
Если я правильно понимаю, каталоги, которые вы пытаетесь задокументировать, не имеют __init__.py файлов и, следовательно, являются пакетами пространства имен, а не обычными пакетами Python. См. 6.4 Пакеты. Но здесь есть ряд проблем, например: при использовании обычного макета все ваши .py файлы должны находиться внутри /src/name_your_base_package, а в conf.py вы должны использовать os.path.join('..', '..', 'src') для импорта из пакета (с __init__.py) name_your_base_package.   -  person bad_coder    schedule 21.03.2021
comment
Это может сбивать с толку, я предлагаю создать простую пару пакет / модуль (с __init__.py) и понять, как вставлять модули в _ 2_ работает, когда вы что-то выполняете (потому что вставка и поиск также зависят от того, как вы выполняете что-то.) Вот хорошая тема по поиску модулей. Что касается этого конкретного вопроса, не совсем понятно, как вы хотите структурировать свой проект, поэтому на самом деле невозможно дать осмысленный ответ.   -  person bad_coder    schedule 21.03.2021
comment
Вот два примера с использованием src layout и с использованием обычного макет, показывающий, как запустить Sphinx в двух разных макетах проекта. Судя по вашей показанной структуре, трудно сказать, придерживались ли вы того или иного пути, но я бы рекомендовал рассмотреть этот пример.   -  person bad_coder    schedule 21.03.2021
comment
Спасибо. Для меня решением было изменить структуру формата src, а затем изменить путь к файлу conf.py на sys.path.insert (0, os.path.abspath ('../../ ..')). Затем я изменил исходный и выходной каталог для команды sphinx-api с: sphinx-api -o ./source .. To: sphinx-api -o ./source ../../ Теперь все работает :)   -  person Dean    schedule 21.03.2021
comment
Если вы выбрали макет /src, вы, вероятно, также захотите сделать установка для разработки. Вот простой пример. Выбор макета коррелирует с тем, как вы настраиваете виртуальные среды, и есть несколько возможных решений (отсюда это будет зависеть от вашей конкретной настройки). Но с раскладкой /src действительно нет ничего плохого, это то, что все используют.   -  person bad_coder    schedule 21.03.2021