18

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

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

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

我不太喜欢这个解决方案,因为我必须向 setup.py 添加一些技巧并实现一个 shell 脚本。此外,我使用 ${PREFIX}/share/man 作为手册页路径,它并不适用于所有系统,例如 FreeBSD 似乎将第 3 方手册页安装到 /usr/local/man (即没有share/)。

有没有更优雅的方法来做到这一点?

4

2 回答 2

2

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

distutils2 将支持安装手册页。

于 2011-10-09T10:15:08.893 回答
2

Your little hack in your setup.py does the trick.... In complement, you can add a special man_prefix options that can be passed at setup time to change the man path.

You can do this like this :

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
于 2010-09-14T12:07:35.157 回答