Sphinx - 如何将Python函数作为源代码包含进来

6
Sphinx在链接Python对象方面非常出色。例如,编写以下代码:
:func:`foo.bar`

会直接链接到foo.py中的bar函数。我希望实现同样的功能,但不是创建可点击的链接,而是将bar()的代码作为文本。

.. code-block:: language指令要求您手动编写要添加的代码。但我想使用intersphinx链接到已存在于外部Sphinx项目中的代码,而不是自己编写代码。 :mod::func:等只创建链接,不包含源代码。

还有.. literalinclude:: filename,但在我的情况下,我不能使用它,因为该函数来自Sphinx项目之外(使用intersphinx进行链接,不是实际项目的一部分)。即使.. literalinclude:: filename可以跨项目工作,我认为我仍然需要使用:lines:过滤每个函数,这将非常麻烦。

如何通过命名空间路径引用函数/类,并使用它将其源代码直接添加到sphinx rst文件中?(不是作为可点击的链接,而是字面上的代码)。

2个回答

3

2

这个功能是开箱即用的。您要查找的是literalinclude指令及其:pyobject:参数。

---[mymodule.py]------------
def hello(who):
    print(f'Hello {who} !')


---[mydocumentation.rst]----

Bla bla bla lorem ipsum

.. literalinclude: ../../path/to/mymodule.py
   :pyobject: hello

这将仅在您的文档中包含hello()函数的代码。


1
如第三段所述,literalinclude 不起作用,因为它需要一个路径,而我无法访问该路径,因为它在不同的目录/ git 存储库中。除非它可以通过命名空间引用并仍然与 intersphinx 一起工作,否则对于此操作无用。 - ColinKennedy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接