On Python Documentation with Sphinx

1 minute read

Published:

I’ve been exploring the Python documentation system for ReadTheDocs with Sphinx. It could be that I’m dense, but the sphinx-quickstart command seems horribly divorced from most of the automagic documentation goals of the Sphinx project. After following several guides1, 2 I noticed that only an index.rst had been created in the _sources directory. Brandon’s guide suggests that adding your module to either your PYTHONPATH or to your conf.py before make html would lead to autodoc recognizing your package. I wasn’t able to get this to work on OSX Sierra using a virtualenv. After looking through more tutorials, I encountered some suggestions for the sphinx-apidoc command, without actual invocation details.

So it seems that to generate the documentation for a new module, you must run sphinx-apidoc to generate the module’s .rst file, and then run make html to generate the html. It’s remarkably easy when you figure it out, but kind of poorly documented considering the docs come from Sphinx and RTD directly.

I suppose I assumed that sphinx-quickstart would have an option to specify existing module/lib directories and automatically bootstrap a Python package/project to make it a simpler experience. I highly recommend sphinx-mode.el for Emacs users, to automatically generate Sphinx-format docstrings and capture most of the function signature.