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

2024-04-18 23:38:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用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'

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

现在的问题是,当我运行python inference.py时,我得到了ModuleNotFoundError: No module named 'meg_analysis',PyCharm开始用红色标出它的所有用法。你知道吗

有没有一种方法可以让autodoc成功地记录我的所有文件,而不必在每次使用模块的另一部分时都包含模块级导入?我是不是在某些基本的方面构造了错误的代码?你知道吗


Tags: 模块文件代码frompyimportdatacreate
1条回答
网友
1楼 · 发布于 2024-04-18 23:38:44

添加项目目录和上面的目录修复了这个问题。你知道吗

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

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

不确定这是否是最好的解决方案,但似乎是可行的。你知道吗

相关问题 更多 >