Python:在基于distutils的项目中安装手册页
我有一个Python项目,主要是一些命令行脚本和一个辅助包。因为这些脚本有很多命令行选项,所以我决定为每个脚本创建一个手册页,并使用ronn(http://rtomayko.github.com/ronn/)来用Markdown写手册并生成mdoc。
我的问题是:在基于distutils的项目中,怎么生成和安装手册页?
我想出了一个解决方案:创建一个简单的install.sh脚本,用来生成和安装手册页。我在重载的'install'命令中调用这个脚本,并传递指定的前缀给它……你可以在这里查看实际代码:http://github.com/novel/lc-tools。
不过我对这个解决方案不太满意,因为为了这个简单的任务,我还得在setup.py中添加一些小改动,并且还要实现一个shell脚本。而且,我使用的是${PREFIX}/share/man作为手册页的路径,这在所有系统上都不正确,比如FreeBSD似乎把第三方的手册页安装到/usr/local/man(也就是说没有share/)。
有没有更优雅的方法来做到这一点?
2 个回答
2
distutils这个工具不支持生成手册页。为了实现这个功能,有人写了一些扩展,通常是通过自定义的distutils命令来实现的。比如,Ubuntu有一个叫做python-distutils-extra的工具。
而distutils2将会支持安装手册页。
2
你在setup.py里的小技巧真不错……另外,你还可以添加一个特别的man_prefix选项,这个选项可以在设置时传入,用来改变手册的路径。
你可以这样做:
class lc_install(install):
description = "Custom Install Process"
user_options= install.user_options[:]
user_options.extend([('manprefix=', None, 'MAN Prefix Path')])
def initialize_options(self):
self.manprefix = None
install.initialize_options(self)
def finalize_options(self):
if self.manprefix is None :
self.manprefix = "DEFAULT MAN PREFIX PATH IF THE OPTION IS NOT SET"
install.finalize_options(self)
def run(self):
.... # Your run method