sphinx-如何包括Python函数作为源代码

时间:2019-10-07 21:14:54

标签: python python-sphinx

Sphinx非常适合链接到特定的Python对象。

例如,写

:func:`foo.bar`

将直接链接到bar中的foo.py函数。我希望具有相同的功能,但与其希望创建一个bar()的代码,而不是创建可点击的链接。

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

也有.. literalinclude:: filename,但就我而言,我不能使用它,因为该功能来自Sphinx项目之外(它是使用intersphinx链接的,并不属于实际项目)。即使.. literalinclude:: filename可以以某种方式跨项目工作,我认为我仍然需要使用:lines:来过滤每个功能,这将是跟踪的巨大痛苦。

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

2 个答案:

答案 0 :(得分:1)

没人回答,所以我做了我自己的:https://github.com/ColinKennedy/sphinx-code-include

答案 1 :(得分:0)

此功能开箱即可使用。您正在寻找的是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()函数的代码。