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

Rom*_*kiy 17 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(即没有共享/).

有更优雅的方法吗?

ohe*_*ohe 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
Run Code Online (Sandbox Code Playgroud)