Create a Sphinx project

Installation and start

  1. Create a virtual environment for your documentation project:

    $ python3 -m venv venv
    
    C:> python -m venv venv
    
  2. Switch to the virtual environment and install Sphinx there:

    $ cd !$
    cd venv
    $ bin/python -m pip install sphinx
    Creating a virtualenv for this project…
    
    
    C:> cd venv
    C:> bin/python -m pip install sphinx
    Creating a virtualenv for this project…
    
    
  3. Create your Sphinx documentation project:

    $ bin/sphinx-quickstart docs
    Selected root path: docs
    > Separate source and build directories (y/n) [n]:
    > Name prefix for templates and static dir [_]:
    > Project name: my.package
    > Author name(s): Veit Schiele
    > Project release []: 1.0
    > Project language [en]:
    > Source file suffix [.rst]:
    > Name of your master document (without suffix) [index]:
    > autodoc: automatically insert docstrings from modules (y/n) [n]: y
    > doctest: automatically test code snippets in doctest blocks (y/n) [n]: y
    > intersphinx: link between Sphinx documentation of different projects (y/n) [n]: y
    > todo: write "todo" entries that can be shown or hidden on build (y/n) [n]: y
    > coverage: checks for documentation coverage (y/n) [n]:
    > imgmath: include math, rendered as PNG or SVG images (y/n) [n]:
    > mathjax: include math, rendered in the browser by MathJax (y/n) [n]:
    > ifconfig: conditional inclusion of content based on config values (y/n) [n]:
    > viewcode: include links to the source code of documented Python objects (y/n) [n]: y
    > githubpages: create .nojekyll file to publish the document on GitHub pages (y/n) [n]:
    > Create Makefile? (y/n) [y]:
    > Create Windows command file? (y/n) [y]:
    
    Creating file docs/source/conf.py.
    Creating file docs/source/index.rst.
    Creating file docs/Makefile.
    Creating file docs/make.bat.
    
    C:> Scripts\sphinx-quickstart docs
    Selected root path: docs
    > Separate source and build directories (y/n) [n]:
    > Name prefix for templates and static dir [_]:
    > Project name: my.package
    > Author name(s): Veit Schiele
    > Project release []: 1.0
    > Project language [en]:
    > Source file suffix [.rst]:
    > Name of your master document (without suffix) [index]:
    > autodoc: automatically insert docstrings from modules (y/n) [n]: y
    > doctest: automatically test code snippets in doctest blocks (y/n) [n]: y
    > intersphinx: link between Sphinx documentation of different projects (y/n) [n]: y
    > todo: write "todo" entries that can be shown or hidden on build (y/n) [n]: y
    > coverage: checks for documentation coverage (y/n) [n]:
    > imgmath: include math, rendered as PNG or SVG images (y/n) [n]:
    > mathjax: include math, rendered in the browser by MathJax (y/n) [n]:
    > ifconfig: conditional inclusion of content based on config values (y/n) [n]:
    > viewcode: include links to the source code of documented Python objects (y/n) [n]: y
    > githubpages: create .nojekyll file to publish the document on GitHub pages (y/n) [n]:
    > Create Makefile? (y/n) [y]:
    > Create Windows command file? (y/n) [y]:
    
    Creating file docs\conf.py.
    Creating file docs\index.rst.
    Creating file docs\Makefile.
    Creating file docs\make.bat.
    

Sphinx layout

venv
└── docs
    ├── Makefile
    ├── _static
    ├── _templates
    ├── conf.py
    ├── index.rst
    └── make.bat

index.rst is the initial file for the documentation, in which the table of contents is located. The table of contents will be expanded by you as soon as you add new *.rst files.

Generate the documentation

You can now generate the documentation, for example with:

$ bin/sphinx-build -ab html docs/ docs/_build
C:> Scripts\sphinx-build -ab html docs\ docs\_build
a

regenerates all pages of the documentation.

Note

This is always useful if you have added new pages to your documentation. to your documentation.

b

specifies which builder should be used to generate the documentation. In our example this is html.