У меня есть модуль Python со следующей структурой:
my_mod
|--- __init__.py
|--- mod1
| |---- __init__.py
|---- testA.py
|---- testB.py
|---- testC.py
Внутри каждого testX.py есть одна функция с именем testX. Эти функции большие, поэтому, чтобы мои файлы были управляемыми, я разделил testA, B и C. Чтобы избежать доступа к этим функциям таким образом:
import my_mod.mod1.testA.testA
Мой файл mod1/__init__.py
структурирован следующим образом:
from .testA import testA
from .testB import testB
from .testC import testC
Итак, мои функции теперь доступны как
import my_mod.mod1.testA
Это ведет себя так, как ожидалось. Однако, когда я перехожу к autodoc моего модуля с Sphinx, документация пропускает эту функцию в __init__
, и я заканчиваю тем, что мои функции задокументированы как
my_mod.mod1.testA.testA(blah, blah, blah)
Это не является фактическим использованием и не будет работать, если будет вызвано в реальном скрипте.
Есть ли способ для Сфинкса понять это? Или, если это не лучший способ структурировать мой модуль, чтобы размер моего файла был небольшим, но чтобы избежать дублирования имен при импорте?
Спасибо за помощь
__all__
вmod1/__init__.py
сохраняет желаемое поведение импорта, но документация по-прежнему ссылается на путь к файлу каждой функции внутри testX.py, а не на путь импорта... automodule :: my_mod.mod1
тоже не имеет значения. Установкаadd_module_names=False
действительно удаляет всю информацию о пути к файлу, немного очищая документацию... Спасибо за внимание - person Kschau   schedule 02.02.2019