构建模块目录的正确方法是什么,以便 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.py
从 create_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/')
不确定这是否是最佳解决方案,但它似乎可行。
我正在尝试使用 Sphinx 为我最近开始创建的模块制作文档。我如何组织我的代码以便 autodoc 和 python 都能正确阅读它?
我有以下文件结构,其中 inference.py
从 create_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/')
不确定这是否是最佳解决方案,但它似乎可行。