python argparse模块bug:将版本信息输出到标准错误

今天打算把 kuaipan cli 编译成 二进制版本

kuaipan cli 使用的官方模块argparse解析命令行参数

下面这种方式,已经被官方废弃了,应该是为了解决 -v冲突的问题

后来修改为

于是写了个脚本自动编译,并且获取版本号

但是 $version 始终为空 ,单独执行 kuaipan.py -v是没问题的

运行环境 debian下是Python 2.7.3 ,window下是Python 2.7.6 都不行

然后怀疑是 argparse的问题

查看了下argparse模块的源码 版本号 是 1.1

问题出来知道了,这里默认的version action 把信息输出到了 stderr标准错误

所以在命令行中获取不到

已经有人提交了issue18920 以及path 不知道什么时候能发布出来

目前临时解决方法是:将标准错误stderr输出到stdout

python argparse模块bug:将版本信息输出到标准错误》有2个想法

  1. fulinux

    你好,你开发的kuaipan cli,我觉得很有意思,我使用你的kuaipan cli遇到了这个问题:
    fulinux@fulinux:~/kuaipan_cli$ cat kp.ini
    [def]
    consumer_key = fulinux@sina.com
    consumer_secret = 这里填密码对吗?
    root = kuaipan
    fulinux@fulinux:~/kuaipan_cli$
    fulinux@fulinux:~/kuaipan_cli$ ./kuaipan.py oauth
    Requires the user to authorize
    Traceback (most recent call last):
    File “./kuaipan.py”, line 101, in
    _set_oauth()
    File “./kuaipan.py”, line 83, in _set_oauth
    _oauth=sess.get_oauth_token()
    File “/home/fulinux/kuaipan_cli/kplib/session.py”, line 143, in get_oauth_token
    self.request_token()
    File “/home/fulinux/kuaipan_cli/kplib/session.py”, line 67, in request_token
    ret = self.request(self.API_HOST,’/open/requestToken’,None)
    File “/home/fulinux/kuaipan_cli/kplib/session.py”, line 57, in request
    ret = http_client.GET(url)
    File “/home/fulinux/kuaipan_cli/kplib/http_client.py”, line 42, in GET
    ret = cls.request(url, header = header)
    File “/home/fulinux/kuaipan_cli/kplib/http_client.py”, line 33, in request
    raise ErrorRespon(e.code, e.read())
    kplib.http_client.ErrorRespon: HTTPCode = 401, reason = {“msg”:”bad consumer key”}, body = None
    fulinux@fulinux:~/kuaipan_cli$
    这是什么缘故呢,我的这个账号和密码都是准确的为什么说bad consumer key
    我本身也不懂这个语言,我想问下你这个怎么用

    回复

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注