构建模块目录的正确方法是什么,以便 Sphinx 扩展 autodoc 可以访问使用 sphinx-apidoc 找到的所有文件?

What is the correct way to structure a module directory so that the Sphinx extension autodoc can access all files found using sphinx-apidoc?

我正在尝试使用 Sphinx 为我最近开始创建的模块制作文档。我如何组织我的代码以便 autodoc 和 python 都能正确阅读它?

我有以下文件结构,其中 inference.pycreate_data.py 导入 Class:

[meg_analysis]
  |
  |-[docs]
  |    |
  |    |-{files created by apidoc}
  |
  |-create_data.py
  |-inference.py

sphinx-apidoc 创建一个名为 meg_analysis.rst 的文件,其中包含 ReST 指令,包括:

.. automodule:: meg_analysis.inference
   :members:
   :undoc-members:
   :show-inheritance:

当我 运行 make html 时,我收到此消息:

WARNING: autodoc: failed to import module 'inference' from module 'meg_analysis'; the following exception was raised:
No module named 'create_data'

我可以通过将导入语句从 from create_data import SimulatedData 更改为 from meg_analysis.create_data import SimulatedData 来修复此错误。

问题是现在当我 运行 python inference.py 我得到 ModuleNotFoundError: No module named 'meg_analysis' 并且 PyCharm 开始用红色强调它的所有用途。

有什么方法可以让我 autodoc 成功地记录我的所有文件,而不必在每次我想使用模块其他部分的内容时都包含模块级导入?我是否以某种基本方式错误地构建了我的代码?

添加项目目录和上面的目录解决了这个问题。

sphinx-quickstart 创建的 conf.py 文件中,添加行

import sys
sys.path.insert(0, '/Users/{USER_NAME}/PycharmProjects/')
sys.path.insert(0, '/Users/{USER_NAME}/PycharmProjects/meg_analysis/')

不确定这是否是最佳解决方案,但它似乎可行。