Настройка пути сфинкса для autodo c с повторяющимися именами подмодулей - PullRequest
1 голос
/ 03 мая 2020

У меня есть проект, имеющий следующую структуру:

Project
|_ code
  |_ subfolder_1
    |_ app
      |_ a.py
      |_ ...
  |_ subfolder_2
    |_ app
      |_ b.py
      |_ ...
|_ docs
  |_ ...

Исходные файлы Sphinx находятся в каталоге docs. Я хотел бы сослаться на классы и модули, которые живут под subfolder_1/app и subfolder_2/app.

Я попытался добавить следующее к conf.py:

sys.path.insert(0, os.path.abspath('../../code/subfolder_1'))
sys.path.insert(0, os.path.abspath('../../code/subfolder_2'))

и сослаться на классы с:

.. automodule:: app.a
    :members:
    :undoc-members:

.. automodule:: app.b
    :members:
    :undoc-members:

, но дубликаты каталогов app, кажется, вызывают неожиданное поведение для Sphinx, который находит модули только в subfolder_1/app или subfolder_2/app.

Я также пытался ссылаться на подкаталоги как пакеты в conf.py:

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

и ссылаться на классы с помощью:

.. automodule:: subfolder_1.app.a
    :members:
    :undoc-members:

.. automodule:: subfolder_2.app.b
    :members:
    :undoc-members:

, но Sphinx будет выдавать несколько ошибок failed to import module, поскольку subfolder_1 и subfolder_2 оба каталога "root", с которых начинается все в соответствующем каталоге app.

Есть ли какие-либо исправления / лучшие практики для успешного создания документов Sphinx для этого макета проекта?

...