Python sphinx sphinx:跨嵌套目录嵌套包含

Python sphinx sphinx:跨嵌套目录嵌套包含,python-sphinx,Python Sphinx,斯芬克斯是否允许嵌套包含 我有这样一个层次结构: ~> root |_conf.py |_index.rst |_level1.rst |_level2 |_level2.rst |_level3 |_level3.rst 文件的外观如下: ~> more conf.py import os import sys sys.path.insert(0, os.path.abspath('.')) sys.path.insert

斯芬克斯是否允许嵌套包含

我有这样一个层次结构:

~> root
   |_conf.py
   |_index.rst
   |_level1.rst
   |_level2
     |_level2.rst
     |_level3
       |_level3.rst
文件的外观如下:

~> more conf.py
import os
import sys
sys.path.insert(0, os.path.abspath('.'))
sys.path.insert(0, os.path.abspath('level1'))
sys.path.insert(0, os.path.abspath('level1/level2'))
sys.path.insert(0, os.path.abspath('level1/level2/level3'))
project = 'PM'
copyright = '2020, PM'
author = 'PM'
extensions = [
]
templates_path = ['_templates']
exclude_patterns = ['_build']
注意:所有子级都添加到sys.path中

该索引只添加了level1

~> more index.rst
Welcome to PM's documentation!
==============================

.. toctree::
   :maxdepth: 6
   :caption: Contents:

   level1
rst文件看起来像:

~> more level1.rst
level1
######

this is level1

.. include:: level2/level2.rst

~> more level2/level2.rst
level2
======

this is level2

.. include:: level3/level3.rst

~> more .\level2\level3\level3.rst
level3
------

this is level3
编译将发出以下警告:

~> make latexpdf
...
reading sources... [100%] level2/level3/level3
level2/level2.rst:6: WARNING: Problems with "include" directive path:
InputError: [Errno 2] No such file or directory: 'level3/level3.rst'.
...
目录可以降到第2级:

1 level1
  1.1 level2 
但第3级缺失:

     1.1.1 level3
级别3被忽略

有没有办法让它发挥作用?这样还是那样?或者有什么解决办法? 例如,在level2.rst中是否有一种方式可以说“pwd现在是level2”

更新

实际应用程序看起来更像:

~> root
   |_conf.py
   |_index.rst
   |_level1.rst
   |_level2
   | |_conf.py
   | |_index.rst
   | |_level2.rst
   | |_level3
   |   |_conf.py
   |   |_index.rst
   |   |_level3.rst
   |_level4
     |_conf.py
     |_index.rst
     |_level4.rst
     |_level3
       |_conf.py
       |_index.rst
       |_level3.rst
level3
实际上是一个
git子模块
,它被克隆到
level2
level4
中,但在不同的分支上,文档可能不相同

理想情况下,
level3
应该生成自己的文档
level2
level4
应生成自己的文档,包括
level3
中的文档
level1
应生成自己的文档,包括
level2
(嵌入
level3
)和
level4
(嵌入
level3
)的文档

这就是为什么在我的第一次简化尝试中,所有路径都是相关的


我试图了解这(理想情况)是否可能。

问题出在这行
。。include::level3/level3.rst
应为
。。include::level2/level3/level3.rst
要添加到@bad_coder的注释中,我更喜欢使用根相对路径,其中根是
conf.py
的位置。请注意,
sys.path
是指定Python模块搜索路径的字符串列表。它与嵌套的
include
指令的结构无关。@bad\u coder:我理解
。。include::level2/level3/level3.rst
有效。在现实生活中,有一个
level4
level2
处于同一级别
level3
实际上是一个
git子模块
,它被克隆到
level2
level4
中,但在不同的分支上,文档可能不相同。如果可能的话,我会寻找一个只有相对路径的解决方案(不涉及“上层信息”)@StevePiercy:在现实生活中,理想情况下,每个
levelX
都是一个独立的项目,它有自己的
conf.py
index.rst
。我试图了解是否可以将一个(较低)级别的文档重用到另一个(较高)级别的文档中。这就是为什么在我的尝试中,所有路径都是相关的<代码>级别3应生成自己的文档
level2
应生成自己的文档,包括
level3
中的文档
level1
应生成自己的文档,包括
level2
level3
中的文档。我试图理解这是否可能