今天打算把 kuaipan cli 编译成 二进制版本
kuaipan cli 使用的官方模块argparse解析命令行参数
下面这种方式,已经被官方废弃了,应该是为了解决 -v冲突的问题
1 2 |
parser=argparse.ArgumentParser(version='0.2') |
后来修改为
1 2 |
parser.add_argument('-v','--version', action='version', version='0.2', help="show program's version number and exit") |
于是写了个脚本自动编译,并且获取版本号
1 2 3 |
version=`kuaipan.py -v` echo $version |
但是 $version 始终为空 ,单独执行 kuaipan.py -v是没问题的
运行环境 debian下是Python 2.7.3 ,window下是Python 2.7.6 都不行
然后怀疑是 argparse的问题
查看了下argparse模块的源码 版本号 是 1.1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
class _VersionAction(Action): .... def __call__(self, parser, namespace, values, option_string=None): version = self.version if version is None: version = parser.version formatter = parser._get_formatter() formatter.add_text(version) parser.exit(message=formatter.format_help()) .... def _print_message(self, message, file=None): if message: if file is None: file = _sys.stderr file.write(message) # =============== # Exiting methods # =============== def exit(self, status=0, message=None): if message: self._print_message(message, _sys.stderr) _sys.exit(status) |
问题出来知道了,这里默认的version action 把信息输出到了 stderr标准错误
所以在命令行中获取不到
已经有人提交了issue18920 以及path 不知道什么时候能发布出来
目前临时解决方法是:将标准错误stderr输出到stdout
1 2 |
version=`kuaipan.py -v 2>&1` echo $version#0.2 |
你好,你开发的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
我本身也不懂这个语言,我想问下你这个怎么用
consumer_key consumer_secret
最近几次一直没登录,这两个需要到快盘官网申请