python 当ipynb文件位于子目录中时,将其包含在sphinx index.rst中

kcwpcxri  于 2023-04-19  发布在  Python
关注(0)|答案(2)|浏览(164)

我被python sphinx卡住了。我的目录树看起来像这样:

| - project_root
|    | - importable_project
|    |    | - importable_module.py
|    |    | - another_importable_module.py
|    |    | - Tutorials
|    |    |    | - tutorial1.ipynb
|    | - docs
|    |    | - build
|    |    |    | - sphinx_build_files_and_folders
|    |    | - source
|    |    |    | - _static
|    |    |    | - _templates
|    |    |    | - conf.py
|    |    |    | - index.rst
|    |    |    | - modules.rst

我已经按照说明启用了nbsphinx extention,并且正在修改源文件夹中的index.rst文件。
以下是index.rst文件的当前外观:

.. Pycotools documentation master file, created by
   sphinx-quickstart on Wed Oct 11 11:46:06 2017.
   You can adapt this file completely to your liking, but it should at least
   contain the root `toctree` directive.

Welcome to Pycotools's documentation!
=====================================

.. toctree::
   :maxdepth: 2
   :caption: Contents:

   /modules
   ../../importable_project/Tutorials/tutorial1

Indices and tables
==================

* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`

其中大部分是由sphinx-quickstart自动生成的。我知道这里指定的文件路径是相对于index.rst文件的位置的。所以在这种情况下,project_root/docs/source和sphinx能够使用上面的index.rst文件为moudles.rst生成html。
问题是,我想在文档中包含我的教程,但../../importable_project/Tutorials/tutorial1行无法找到tutorial1.ipynb
谁能告诉我哪里做错了吗?

zpf6vheq

zpf6vheq1#

教程是文档,应该移动到docs/source目录中。Sphinx无法找到其源目录之外的文件,除了通过autodoc的包。移动.ipynb文件后,您需要相应地调整路径。

gfttwv5a

gfttwv5a2#

可以使用nbsphinx-link
更简单的结构:

|Project root
     |notebooks
           |sample.ipynb
     |docs
          |build
          |source

安装nbsphinx-link

pip install nbsphinx-link

在Sphinx构建配置中添加nbsphinx和nbsphinx_link作为扩展,通常在www.example.com中conf.py:

extensions = [
       # ...
       # any other extensions you need,
       # ...
       'nbsphinx',
       'nbsphinx_link',
    ]

在源目录中添加一个.nblink文件链接到笔记本。

|Project root
     |notebooks
           |sample.ipynb
     |docs
          |build
          |source
               |sample.nblink

在sample.nblink中添加notebook的路径

{
"path": "relative/path/to/notebook"
}

然后,index.rst中的Link .nblink文件应该可以工作

相关问题