Sphinx docs / RST包含来自动态路径的文件?

时间:2017-07-14 05:47:11

标签: python-sphinx restructuredtext

我想知道是否可以在Sphinx和/或RST ..include::指令中使用动态路径?

我的理由是我在一个仓库中有一些由Sphinx生成的开发人员文档,但我们在另一个仓库中有一堆单元测试,我们希望将其包含在文档中。如果我知道其他仓库中文件的路径,那就非常标准,如下所示:

Some text in my RST file

.. include:: ../path/to/other/repo/file.py
:code: python

Some more text

问题是其他repo的相对路径并不总是相同,具体取决于克隆和安装的方式。例如,在阅读文档时,另一个repo以可编辑模式通过requirements.txt安装到/src子文件夹中,本地repo位于git文件夹中等等。

我可以在conf.py文件中添加逻辑来查找其他repo并设置一个我可以在RST文件中使用的指针,但我无法弄清楚是否可以在其中创建一个动态路径..include::

到目前为止,我能想到的唯一解决方法是让我的conf.py找到另一个repo并创建一个我在RST文件中引用的符号链接,这很好,但我想知道是否有更好的方法?

1 个答案:

答案 0 :(得分:1)

稍微玩了一下后,我决定创建一个软链接是可行的方法。 (起初我打算使用硬链接,但在Read The Docs上创建失败。软链接适用于RTD和Sphinx。)

所以我在conf.py中有代码遍历文件夹结构以找到我需要包含文件的其他repo,然后它创建链接(在首先删除旧的并检查它找到的repo的版本之后)确保它是正确的)。然后我只使用软链接进行..include::,一切都很好。

总的来说,这并不是一个糟糕的解决方案,最重要的是它可以在本地和RTD上运行,无论其他仓库的位置如何,它都能正常工作。