生成Python CLI手册页

13 投票
4 回答
10520 浏览
提问于 2025-04-17 00:16

我正在开发一个用Python写的命令行工具(现在用的是Python 2.6的optparse,但希望很快能切换到Python 2.7),现在我准备写手册页(man page)。

我有一些生成动态手册页的经验,主要是通过:

  • 创建一个专门的方法,把内容以pod格式组合成字符串,然后写入文件
  • 执行pod2man命令,将数据生成groff格式,以便传给man命令

我还想生成和手册页内容相同的wiki页面(通过pod我可以用pod2html生成html,可能这个html可以很容易地转成wiki格式)。有没有人有更好的想法或流程来实现这个?

我发现这个链接很有意思:使用optparse和distutils创建手册页

4 个回答

4

如果你在使用 click 这个工具,你可以试试 click-man。这个工具可以从你的 click 应用程序生成手册页。

6

虽然sphinx是一个非常棒的文档系统,但它真的很复杂,学起来很难。如果你需要一个快速的解决方案,我建议你看看我的项目 build_manpage.py

这个工具并不能替代你用sphinx或者其他方式来好好记录项目的工作。但对于Python程序员来说,它有一些立竿见影的好处:

  • 你不需要学习man的语法。
  • 你也不需要学习rst的语法(不过,迟早你还是应该学会的……)
  • 你不需要同时维护你的optparser或argparser和一个单独的格式化为man页面的外部文件(无论是man、rst还是其他转换系统)。

  • 你只需在构建配置中添加一个文件,就能自动生成man页面!

如果你想使用一个更复杂的系统,带有很多花里胡哨的功能,sphinx允许你将rst格式的页面转换为man页面。而一个最近新兴的项目,采用了类似我这个解析器的方法,扫描你的ArgumentParser,生成带有sphinx指令的rst格式页面(这样你就不需要自己写了)。 (相比之下,我的扫描器是直接生成man页面的)。

请注意,这个功能现在已经成为一个 拉取请求的一部分,目的是在标准库中添加一个man页面格式化工具

14

在Python中,生成文档的常用方法是使用Sphinx。比如,官方的Python文档就是用这个工具制作的。一旦你设置好了Sphinx文档项目(可以参考这个教程),你就可以通过命令make man从你的Sphinx文档文件生成手册页。此外,你还需要在conf.py文件中调整配置,以便生成合适的输出。

值得注意的是,虽然Sphinx是Python中编写文档的常用工具,但这并不意味着它也是生成手册页的唯一工具。你可以选择任何你喜欢的工具!

撰写回答