狮身人面像可以链接到不在根目录下的目录中的文件吗?
我正在使用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('..'))