我正在尝试使用sphinx-auto汇总来创建python代码的自动摘要,如下所示:
main
├───modA
| ├───__init__.py
| ├───modA.py
├───modB
| ├───__init__.py
| ├───modB.py
├───docs
| ├───build
| └───source
| ├───refs
| | |───_autosummary
| | |───index.rst
| | |───modA.rst
| | |───modB.rst
| ├───index.rst
| ├───conf.py正如Sphinx文档中提到的,我插入了工作目录的and路径,将sphinx.ext.autodoc添加到扩展列表中,并将autosummary_generate设置为conf.py中的True。
import os
import sys
sys.path.insert(0, os.path.abspath('../..'))
# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
'sphinx.ext.autodoc',
"sphinx.ext.autosummary",
'sphinx.ext.coverage',
'sphinx.ext.napoleon'
]
autosummary_generate = True接下来,在docs/index.rst中,我添加了对refs/文件夹的引用。
.. toctree::
:maxdepth: 2
refs/indexrefs/index.rst引用了modA.rst和modB.rst。
.. toctree::
:maxdepth: 2
modA
modB在modA.rst和modB.rst中,我试图创建自动摘要。
modA.rst
Attributes
~~~~~~~~~~
.. autosummary::
:toctree: _autosummary
modA.modA.create_jobmodB.rst
Attributes
~~~~~~~~~~
.. autosummary::
:toctree: _autosummary
modB.modB.get_jobs虽然代码适用于modA.rst,但对于modB.rst却失败了。错误上说,
failed to import 'modB.modB.get_jobs': no module named modB.modB.get_jobs我试着把.. currentmodule::modB和.. currentmodule::main放在自动摘要之前,但没有成功。我甚至尝试过将.. module::modB和.. module::main放在自动摘要之前,但即使这样也不起作用。我在网上搜索了很多,但不明白为什么不起作用。
编辑-1:在两个文件夹中添加了__init__.py。
发布于 2021-04-16 13:38:56
我在使用狮身人面像上也有类似的问题。
经过一些实验,我怀疑像failed to import XXX: no module named XXX这样的错误消息并不一定意味着无法找到模块XXX。相反,在我的实验中,在进口XXX时出现了一些错误。
在我的例子中,模块XXX本身正在导入一些尚未安装的包YYY。因为Sphinx导入XXX是为了提取docstring,所以它在这个导入尝试中发现了一个错误。删除该import YYY语句后,我可以成功地构建文档。
发布于 2021-03-23 15:53:25
我也有过类似的问题。
导入错误失败的原因是,在.. autosummary::指令下指定的模块.. autosummary::导入了未安装的库。
Attributes
~~~~~~~~~~
.. autosummary::
:toctree: _autosummary
modA.modA.create_job但是通常情况下,failed to import错误的原因可能不同,因为从.. autosummary::指令导入模块的函数捕获所有错误和自动摘要打印以输出相同的错误消息。
以下是github https://github.com/sphinx-doc/sphinx/issues/7989的相关问题
我建议导入您的模块modA.modA、modB.modB,并查看导入过程中是否有任何错误。
发布于 2021-11-01 12:25:17
当Sphinx无法处理python导入时,它将显示通用模块导入警告(".没有名为.的模块“)就像你提到的。当所有导入的python包都正确地安装在环境中时,似乎甚至会发生此警告,这只意味着某些东西无法导入。
消除这些警告的一个解决方法是使用狮身人面像的autodoc_mock_imports文件中的conf.py来模拟外部python库。
例如:
import flask
import mongoengine
...
# your python code带有模拟烧瓶的conf.py示例:autodoc_mock_imports = ["flask", "mongoengine"]
在这种情况下,Sphinx将忽略这些导入,并且自动摘要可能能够正确构建摘要,而不会出现任何错误。
为了更具体地说明您的情况:您的python ' modB.modB‘可能包含Sphinx无法处理的导入语句,您需要正确安装python包,或者模拟modB.modB文件中导入的特定库。
https://stackoverflow.com/questions/62226506
复制相似问题