【发布时间】:2019-06-06 14:56:23
【问题描述】:
我有一个使用 oauth2client 访问谷歌驱动器的 python (2.7) 程序。我正在尝试获取我的初始凭据文件。我正在使用这个:
from oauth2client.client import flow_from_clientsecrets
from oauth2client.tools import run_flow
SCOPE = 'https://www.googleapis.com/auth/drive'
credentials = 'https://www.googleapis.com/auth/drive'
CLIENT_SECRET_FILE = os.path.join(credential_path, 'client_secret.json'
flow = flow_from_clientsecrets(CLIENT_SECRET_FILE, scope=SCOPE)
http = httplib2.Http()
credentials = run_flow(flow, store, http=http)
但是,我收到了似乎是 Argparser 使用错误?
usage: responseratedash2.py [--auth_host_name AUTH_HOST_NAME]
[--noauth_local_webserver]
[--auth_host_port [AUTH_HOST_PORT [AUTH_HOST_PORT ...]]]
[--logging_level {DEBUG,INFO,WARNING,ERROR,CRITICAL}]
responseratedash2.py: error: unrecognized arguments: -r 2341 -t
responseratedash2.py 是我的程序的名称,-r 2341 -t 是该程序的有效参数。但是这个错误发生在run_flow 行...
为什么会这样?
(ETA:解释我如何使用 oauth2client,流程函数都来自该库。)
【问题讨论】:
-
看来
responseratedash2有自己的解析器,并且使用与您自己的代码相同的sys.argv。因此,虽然-r可能对您的代码有效,但它对该解析器无效。您可以查看它识别哪些参数,所有这些登录值。 -
当然,但是为什么很多人使用的任何库都使用 sys.argv?如何让它不假设周围的程序没有它自己的参数?
-
哦,responseratedash2 是我的程序的名称。列出的用法不是 responseratedash2 的正确用法。 -r 和 -t 会触发 responseratedash2。
-
oauth2client应该如何获得这些论点?你自己的代码可以吗?是否准备好将它们传递给相关的模块或功能。我以前见过这样的问题,但不记得解决方案。我怀疑oautho2client(或它的任何名称)是作为脚本调用的,而不是作为嵌入式模块调用的。您没有显示任何有关如何调用它的信息。
标签: python-2.7 argparse oauth2client