【问题标题】:Python: Installing man pages in distutils based projectPython:在基于 distutils 的项目中安装手册页
【发布时间】:2010-09-07 08:57:36
【问题描述】:

我有一个 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/)。

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

【问题讨论】:

    标签: python distutils


    【解决方案1】:

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

    distutils2 将支持安装手册页。

    【讨论】:

    • 你有最后一个索赔的参考资料吗?
    • 我是 distutils2 的维护者,所以它在我的计划中。现在 distutils2 已不复存在,取而代之的是各种项目(基本规范的打包,setuptools+wheel 或 flit 构建,twine 上传,pip 安装)。还有一个开放的票可以将手册页生成添加到 stdlib 中的 argparse 模块。
    • @ÉricAraujo 你能发布那个票的链接吗?我们会发现它很有用。
    【解决方案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
    

    【讨论】:

    • 是的,我想添加它会很好。
    • 所以不会让我修复您代码中的一个错误:如果您不复制 install.user_options 列表,那么当您调用扩展时,您最终会编辑原始安装列表选项。请记住 user_options = install.user_options 将第二个名称绑定到同一个对象,您必须使用例如user_options = install.user_options[:] 创建不同的对象。
    猜你喜欢
    • 1970-01-01
    • 2020-08-24
    • 2013-11-28
    • 1970-01-01
    • 2011-04-18
    • 2014-01-06
    • 2010-10-25
    • 1970-01-01
    • 2018-10-12
    相关资源
    最近更新 更多