Rem*_*ing 17 python python-sphinx api-doc
我创建了一个使用setuptools的演示项目,它具有以下结构:
project/
|- pizza/
| |- __init__.py
| `- margherita.py
|
|- README.rst
|- setup.cfg
`- setup.py
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用Sphinx自动生成此项目的文档.到目前为止,我已经尝试过:
# Generate a sphinx template
sphinx-quickstart
# Use default settings, except for project name, etc.
sphinx-apidoc -o source .
./setup.py build_sphinx
Run Code Online (Sandbox Code Playgroud)
我觉得必须有到自动生成使用本文档更简单的方法README,setup.py和文档字符串.
最后,我想为另一个使用Python C-api的项目自动生成apidocs.我找不到任何东西.
我的主要问题是:是否有更简单的方法来自动生成此文档?
要进行扩展setup.py,它包含一个Sphinx的额外命令,您可以创建一个自定义命令.我已经编写了一个运行Sphinx apidoc的小例子,然后构建了doc源代码.使用中定义的源的项目名称,作者,版本和位置setup.py(假设它们已定义).
class Sphinx(Command):
user_options = []
description = 'sphinx'
def initialize_options(self):
pass
def finalize_options(self):
pass
def run(self):
# metadata contains information supplied in setup()
metadata = self.distribution.metadata
# package_dir may be None, in that case use the current directory.
src_dir = (self.distribution.package_dir or {'': ''})['']
src_dir = os.path.join(os.getcwd(), src_dir)
# Run sphinx by calling the main method, '--full' also adds a conf.py
sphinx.apidoc.main(
['', '--full', '-H', metadata.name, '-A', metadata.author,
'-V', metadata.version, '-R', metadata.version,
'-o', os.path.join('doc', 'source'), src_dir])
# build the doc sources
sphinx.main(['', os.path.join('doc', 'source'),
os.path.join('doc', 'build')])
Run Code Online (Sandbox Code Playgroud)
然后,该命令需要注册到入口点组distutils.commands.这里命令被调用sphinx.
from setuptools import setup
setup(
# ...
setup_requires = ['sphinx'],
entry_points = {
'distutils.commands': [
'sphinx = example_module:Sphinx'
]
}
)
Run Code Online (Sandbox Code Playgroud)
我不知道C源是如何处理的,但这会让你开始.
sphinx-apidoc -F -o source .
Run Code Online (Sandbox Code Playgroud)
将使用 sphinx-quickstart 生成一个项目并递归查找 python 模块
您目前的效率已经达到最高水平了。
===下面只是一厢情愿的想法===
如果你可以这样称呼,那不是很可爱吗
./setup.py build_sphinx -C
Run Code Online (Sandbox Code Playgroud)
它会为你创建index.RST,读取你遇到的任何RST文件,解析所有文档字符串并输出一些html。