无法使用 Sphinx 和 Google 文档字符串创建文档

Unable to create documentation with Sphinx and Google docstrings

我正在写一个 Python API 并且我已经使用 Google docstring[=42= 记录了源代码中的每个 class 和函数] 约定,我发现它比 Sphinx 约定更具可读性。我想使用 Sphinx 为我的 API 构建文档。有一个名为 Napoleon 的扩展支持 NumpydocGoogle docstrings,所以我尝试了使用它,我遇到了几个问题。 我在 Ubuntu 12.04.

上使用 Python 2.7.3

我安装了 Sphinx 1.1.3。我为文档做了第一步(sphinx-quickstart,启用了 autodoc 和一个 make 文件)。我在 Sphinx 1.3 之前读到过,我不得不在我的文档的 conf.py 中添加 sphinxcontrib.napoleon 作为扩展名。我这样做了,得到了找不到扩展名 napoleon 的错误。我下载了,安装了,然后出现找不到某个包的错误:

Could not import extension sphinxcontrib.napoleon (exception: cannot import name six)

这是需求文件中的包名,所以我安装了它。我对另一个包有同样的错误,我也安装了它。现在我有同样的错误但是 "range":

Could not import extension sphinxcontrib.napoleon (exception: cannot import name range).

我不知道它是哪个包,我在任何地方都找不到它,所以我卡住了。我尝试了“sphinx.ext.napoleon”以防万一,但找不到扩展名,这是预期的。

然后我想尝试使用 Sphinx 1.3 和应该随 Sphinx 一起提供的“sphinx.ext.napoleon”。使用 apt-get 安装时,我只能获得 1.1.3 版本,即使在更新后也是如此。所以我尝试直接下载并安装Sphinx 1.3,但出现以下错误:

Processing ./Sphinx-1.3.4.tar.gz
    Complete output from command python setup.py egg_info:
    /usr/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'entry_points'
      warnings.warn(msg)
    /usr/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'extras_require'
      warnings.warn(msg)
    /usr/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'include_package_data'
      warnings.warn(msg)
    /usr/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'zip_safe'
      warnings.warn(msg)
    /usr/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'install_requires'
      warnings.warn(msg)

这似乎是设置工具的问题。我找到了这个 post 并尝试了解决方案,但我无法让它工作。

我知道我可以更改我的所有文档字符串,但这需要时间并且可读性较差。除了 Sphinx,我还可以尝试其他工具,但 Sphinx 是 Python 最常用的文档工具,这就是我尝试坚持使用它的原因。

如何从我的资源中的 Google docstring 获得一份好的文档(仍然是自动的)?

rangepython built-in,其行为在 python3 中发生了变化。 pythonsphinxnapoleon versions/requirements 之间可能会有一些争斗(sphinx 1.1.3 相当老)。

关于您的最后一个问题(自动文档),您应该查看 autodoc extension. If you want even more automation, look into the apidoc 脚本,它包含在 sphinx > 1.1.

这不是直接 solution/answer 您的问题,但您也可以使用更 up-to-date 和更强大的 python 分布,例如 Anaconda (而不是Ubuntu 存储库中的陈旧 python),这将使您可以轻松使用最新的 napoleonsphinx 版本。