Python:在基于distutils的项目中安装手册页

时间:2010-09-07 08:57:36

标签: python distutils

我有一个Python项目,它基本上是一组命令行脚本和一个帮助程序包。由于这些脚本有许多命令行选项,我决定为每个脚本创建一个手册页,并使用ronn(http://rtomayko.github.com/ronn/)在Markdown中编写手册并从中生成mdoc。

问题是:如何在基于distutils的项目中生成和安装手册页?

我提出了以下解决方案:创建一个简单的 install.sh 脚本,用于生成和安装手册页。我从重载的'install'命令调用此脚本并将指定的前缀传递给它...您可以在此处检查实际代码:http://github.com/novel/lc-tools

我不太喜欢这个解决方案,因为简单的任务我必须添加一些hack来setup.py并实现一个shell脚本。此外,我使用$ {PREFIX} / share / man作为手册页路径,并且它对所有系统都不正确,例如FreeBSD似乎将第三方手册页安装到/ usr / local / man(即没有 share / )。

有更优雅的方法吗?

2 个答案:

答案 0 :(得分:2)

你的setup.py中的小黑客可以解决这个问题....作为补充,你可以添加一个特殊的man_prefix选项,可以在设置时传递以更改man路径。

你可以这样做:

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

答案 1 :(得分:2)

distutils不支持手册页。人们已经编写了扩展来支持它们,通常以自定义distutils命令的形式。例如,参见Ubuntu中的python-distutils-extra。

distutils2将支持安装手册页。