狮身人面像可以链接到不在根目录下的目录中的文件吗?

我正在使用Sphinx来logging一个非Python项目。 我想在每个子模块中分发./doc文件夹,其中包含submodule_name.rst文件来logging该模块。 然后,我想将这些文件吸收到主层次结构中,为整个devise创build一个规范。

即:

 Project docs spec project_spec.rst conf.py modules module1 docs module1.rst src module2 docs module2.rst src 

我试图在主project_spec.rst文档toctree中包含这样的文件:

 .. toctree:: :numbered: :maxdepth: 2 Module 1 <../../modules/module1/docs/module1> 

但是,这个错误信息的结果

警告:toctree包含对不存在的文档的引用u'modules / module1 / docs / module1'

以某种方式在文档path中使用../是不可能的?

更新:添加conf.py位置

是的你可以!

代替一个符号链接(这不会在Windows上工作),创build一个没有任何内容,但.. include::指令的存根文件。

我遇到了这个问题,试图链接到源代码树顶部的README文件。 我把以下内容放在一个名为readme_link.rst的文件中:

 .. include:: ../README 

然后在index.rst ,我使得toctree如下所示:

 Contents: .. toctree:: :maxdepth: 2 readme_link other_stuff 

现在我在我的索引页上有一个链接到我的发行说明。

感谢http://reinout.vanrees.org/weblog/2010/12/08/include-external-in-sphinx.html的build议;

看来答案是否定的,toc-tree中列出的文档必须位于源目录 ,即包含主文档和conf.py (以及任何子目录)的目录中。

在sphinx-dev邮件列表中 :

在STScI,我们为Sphinx中的单个项目编写文档,然后生成一个“主文档”,其中包含(使用toctree)一些其他项目特定的文档。 为此,我们在主文档的文档源目录中创build符号链接到项目的文档源目录,因为toctree似乎并不想包含文档源树以外的文件。

因此,而不是使用shutil复制文件,您可以尝试在Project/docs/spec目录中的所有模块中添加符号链接。 如果你创build一个符号链接到Project/modules那么你可以在你的toc-tree中引用这些文件,就像modules/module1/docs/module1等一样。

一种解决scheme,如果真的不可能使用备份../相对链接,我可以使用shutil将文件复制到规范的conf.py的spec文件夹树中,但是我不想有多个副本除非绝对必要。

在conf.py中,使用sys.path和os.path将相对path添加到系统

例如:

 import os import sys sys.path.insert(0, os.path.abspath('..')) sys.path.insert(0, os.path.abspath('../../Directory1')) sys.path.insert(0, os.path.abspath('../../Directory2')) 

然后像往常一样使用你的index.rst,引用同一目录中的第一个文件。 所以在我的本地Sphinx文件夹的index.rst中:

 Contents: .. toctree:: :maxdepth: 4 Package1 <package1.rst> Package2 <package2.rst> Package3 <package3.rst> 

然后在package1.rst中,你应该能够正常引用相关的包。

 Package1 package ===================== Submodules ---------- Submodule1 module ---------------------------------- .. automodule:: file_within_directory_1 :members: :undoc-members: :show-inheritance: Submodule1 module ---------------------------------- .. automodule:: file_within_directory_2 :members: :undoc-members: :show-inheritance: 

也可以将sphinxconfiguration为在根目录下只有index.rst文件,在Project / docs中只有其他所有sphinx的东西:

对于窗口,我将所有的狮身人面像文件和目录(index.rst除外)移动到文档/并更改:

docs/make.bat :更改

 set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% . 

 set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% -c . .. 

docs/conf.py :添加

 sys.path.insert(0, os.path.abspath('..'))