Я использую Sphinx для документирования проекта, отличного от Python. Я хочу распределить ./doc
папки в каждом подмодуле, содержащие submodule_name.rst
файлы для документирования этого модуля. Затем я хочу поместить эти файлы в главную иерархию, чтобы создать спецификацию для всего дизайна.
Т.е.:
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 '
Разве это невозможно как-то использовать ../
в пути к документу?
Обновление: добавлено расположение conf.py
Обновление: кроме трюка с включением ниже, это все еще (2019) невозможно. Существует нерешенная проблема, которая постоянно выдвигается вперед: https://github.com/sphinx-doc/sphinx/issues/701
источник
.rst
расширение к строкеModule 1 <../../modules/module1/docs/module1>
?source_suffix
это установлено.rst
в вашемconf.py
файле конфигурации. Кроме того, где этот файл в иерархии каталогов, поскольку кажется, что все пути относятся к этому файлу?source_suffix
установлен.rst
иconf.py
находится в той же папке, что иproject_spec.rst
файл.Ответы:
Да, ты можешь!
Вместо символической ссылки (которая не работает в Windows) создайте документ-заглушку, в котором нет ничего, кроме
.. include::
директивы.Я столкнулся с этим, пытаясь установить ссылку на файл README, который находился в верхней части дерева исходных текстов. Я поместил следующее в файл с именем
readme_link.rst
:Затем
index.rst
я сделал так, чтобы дерево выглядело так:Contents: .. toctree:: :maxdepth: 2 readme_link other_stuff
И теперь у меня есть ссылка на мои примечания к выпуску на моей индексной странице.
Спасибо http://reinout.vanrees.org/weblog/2010/12/08/include-external-in-sphinx.html за предложение
источник
docs
), которая ссылается на current-dir ('.'). Затем вы можете использовать: download:docs\foo.rst
и это будет работать для файлов внутриdocs
папки или ее родительской папки... include:: ../readme.rst
том числе расширение.Кажется, что ответ отрицательный, документы, перечисленные в дереве toc, должны находиться в исходном каталоге , то есть в каталоге, содержащем ваш главный документ и
conf.py
(и любые подкаталоги).Из списка рассылки sphinx-dev :
Поэтому вместо того, чтобы копировать файлы с помощью,
shutil
вы можете попробовать добавить символические ссылки на все свои модули вProject/docs/spec
каталоге. Если вы создадите символическую ссылкуProject/modules
, тогда вы будете ссылаться на эти файлы в своем дереве toc просто какmodules/module1/docs/module1
и т. Д.источник
sys.path
в файл conf.py, но это не сработало.В conf.py добавьте относительные пути к системе, используя sys.path и os.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 как обычно, ссылаясь на первые файлы в том же каталоге. Итак, в моем index.rst в моей локальной папке Sphinx:
Contents: .. toctree:: :maxdepth: 4 Package1 <package1.rst> Package2 <package2.rst> Package3 <package3.rst>
Затем в package1.rst вы сможете просто ссылаться на соответствующие пакеты в обычном режиме.
источник
Package1
? Это впервыеpath
указано с помощьюsys.path.insert
? Или где-нибудь есть учебник? Кажется, я не могу найти соответствующий документ.Package1
- это именованная запись, поэтому в оглавлении в качестве заголовка раздела отображается «Package1».Также можно настроить sphinx так, чтобы в корне был только файл index.rst, а все остальные вещи sphinx в Project / docs:
Для окон я переместил все файлы и каталоги sphinx (кроме index.rst) в docs / и изменил:
docs/make.bat
: Изменитьк
docs/conf.py
: Добавитьsys.path.insert(0, os.path.abspath('..'))
источник
Я решил свою довольно похожую проблему с той разницей, что хотел включить внешний блокнот jupyter. Я установил nbsphinx, но не смог заставить его работать. Что не вышло:
У меня был каталог, в который я хотел включить корень в путь:
conf.py:
import os import sys sys.path.insert(...
Использование
.. include:: directive
файла было включено в документацию, но как есть.Наконец, проблема была решена путем установки пакета nbsphinx-link.
источник
Одно из решений, если действительно невозможно использовать относительные ссылки, которые создают резервную копию,
../
- это то, что я мог бы использоватьshutil
для копирования файлов в дерево папок спецификации вconf.py
спецификации, но я бы предпочел не иметь нескольких копий, если это абсолютно необходимо.источник