Sphinx autodoc - 装饰器和 ReadTheDocs

Posted

技术标签:

【中文标题】Sphinx autodoc - 装饰器和 ReadTheDocs【英文标题】:Sphinx autodoc - decorator and ReadTheDocs 【发布时间】:2018-10-20 04:48:35 【问题描述】:

我在使用 Autodoc 自动生成的 Sphinx 文档时遇到了一些问题。我基本上和这里有同样的问题:Python Sphinx autodoc and decorated members

当我在函数上使用装饰器时,文档中显示的签名就是装饰器的签名。按照上述线程的指示,我将@decorator 装饰器放在我的装饰器定义中,它确实解决了问题。

现在我已经将我的项目连接到 ReadTheDoc.org,它工作得很好,唯一的事情是装饰器问题回来了,不管以前的修复。

我对 Sphinx 还很陌生,所以我不确定这是否值得在 RTD Github 项目上产生问题。我在这里能错过什么?查看损坏的签名here

可能是配置吗?我用 Python3 构建文档

另外,如果模块不可用,我定义了一个虚拟@decorator,如下所示:

try:
    from decorator import decorator
except ImportError:
    def decorator(f):
        return f

【问题讨论】:

您是否在本地安装了decorator?接下来,您是否将装饰器指定为包或 RTD requirements.txt 中的依赖项? RTD没有按照你的most recent build log安装。 我在本地确实有装饰器模块,但我不记得安装它,我认为它是 Python 标准包的一部分。我确实将它添加到了 requirements.txt 文件中,它解决了这个问题!非常感谢 我将我的评论转换为下面的答案。请接受它作为解决方案。谢谢! 如果答案解决了您的问题,请不要忘记也点赞。 【参考方案1】:

根据您的recent build log on RTD,RTD 上没有安装decorator。

您必须将装饰器指定为包中的依赖项,或者将其添加到您的 RTD 需求文件 requirements.txt

【讨论】:

【参考方案2】:

您可以在 RTD 中添加一个requirements.txt 文件,在该文件中,您可以指定与本地环境完全相同的环境。

当然包括 sphinx,因为 RTD 使用 sphinx==1.6.5。该版本的行为可能与您的不同。

【讨论】:

我在本地使用 Sphinx = 1.3.6。我试过在我的需求文件中强制版本,但没有这样做。我目前有 2 个要求:sphinx_rtd_theme>=0.3.1 sphinx==1.3.6 您需要在项目设置中指定requirements.txt的位置。 是的,我做到了。它是在构建期间考虑的。我之前设置了 sphinx_rtd_theme 来解决另一个问题 (github.com/rtfd/sphinx_rtd_theme/issues/…) 并且它有效,所以这部分看起来不错。

以上是关于Sphinx autodoc - 装饰器和 ReadTheDocs的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Sphinx 中交叉引用 autodoc 生成的函数?

制作sphinx autodoc时如何忽略python项目中的'src'目录

在 Python Sphinx 中,有没有办法隐藏 autodoc 设置代码?

Sphinx autodoc 给出警告:py:class reference target not found: type warning

如何让 sphinx 识别装饰的 python 函数

在 Sphinx 文档中保留包装/装饰 Python 函数的默认参数