【问题标题】:Python's argparse to show program's version with prog and version string formattingPython 的 argparse 以 prog 和版本字符串格式显示程序的版本
【发布时间】:2013-03-02 14:05:51
【问题描述】:

在 argparse 中指定程序名称和版本信息的首选方式是什么?

__version_info__ = ('2013','03','14') __version__ = '-'.join(__version_info__) ... parser.add_argument('-V', '--version', action='version', version="%(prog)s ("+__version__+")")

【问题讨论】:

    标签: python version argparse


    【解决方案1】:

    是的,这是公认的方式。来自http://docs.python.org/dev/library/argparse.html#action

    >>> parser.add_argument('--version', action='version', version='%(prog)s 2.0')
    

    您当然应该以标准方式将版本号嵌入到您的包中:Standard way to embed version into python package?

    如果您遵循该方法,则您有一个 __version__ 变量:

    from _version import __version__
    parser.add_argument('--version', action='version',
                        version='%(prog)s {version}'.format(version=__version__))
    

    例如https://pypi.python.org/pypi/commando/0.3.2a演示的方法:

    parser.add_argument('-v', '--version', action='version', version='%(prog)s ' + __version__)
    

    【讨论】:

    • 以标准方式看起来如何?我看到您将“2.0”的版本示例逐字放在 argparse 代码行中...
    • 很好,编辑后它正在回答问题。非常感谢。尽管如此,我仍然对 %(var) 和 {var) 感到困惑......
    • @type %(var) 是旧的% 字符串格式; {var} 是新的format 字符串格式。
    • 这里好像不能使用统一的字符串格式parser.add_argument('-V', '--version', action='version', version="{prog}s ({version})".format(prog="%(prog)", version=__version__))
    • 如果这是一场圣战,那么在新版本中你甚至可以使用 f-string :D version=f'%(prog)s {version}'
    猜你喜欢
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-16
    相关资源
    最近更新 更多