Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法在Google云平台中建立API连接_Python_Google App Engine_Google Cloud Platform_Credentials - Fatal编程技术网

Python 无法在Google云平台中建立API连接

Python 无法在Google云平台中建立API连接,python,google-app-engine,google-cloud-platform,credentials,Python,Google App Engine,Google Cloud Platform,Credentials,为了从我的项目中检索监控指标,我使用了以下Python代码: 来自google.cloud导入监控\u v3 从google.oauth2导入服务_帐户 从GoogleAppClient导入发现 凭据=服务\u帐户.credentials.from\u服务\u帐户\u文件( r'D:\GCP\credentials\blahblah-04e8fd0245b8.json') service=discovery.build('compute','v1',credentials=credentials

为了从我的项目中检索监控指标,我使用了以下Python代码:

来自google.cloud导入监控\u v3
从google.oauth2导入服务_帐户
从GoogleAppClient导入发现
凭据=服务\u帐户.credentials.from\u服务\u帐户\u文件(
r'D:\GCP\credentials\blahblah-04e8fd0245b8.json')
service=discovery.build('compute','v1',credentials=credentials)
client=monitoring\u v3.MetricServiceClient()
项目名称=f“项目/{blahblah-300807}”
资源\描述符=客户端。列表\受监控\资源\描述符(
名称=项目名称)
对于资源描述符中的描述符:
打印(描述符类型)
我每件事都做得很好。我正确给出了凭据信息的文件路径,但收到以下错误消息:

引发异常。DefaultCredentialsError(\u帮助\u消息)
google.auth.exceptions.DefaultCredentialsError:\
无法自动确定凭据\
请设置GOOGLE\u应用程序\u凭据或显式创建\
并重新运行应用程序\
有关更多信息,请参阅\
https://cloud.google.com/docs/authentication/getting-started

我甚至检查了这个链接并尝试了另一种方法,但仍然不起作用。我怎样才能纠正这个问题?我犯了错误吗?

创建客户端时,您没有使用凭据

client = monitoring_v3.MetricServiceClient()
你可以这样改变它

client = monitoring_v3.MetricServiceClient(credentials=credentials)

就我个人而言,我不喜欢在代码中显式地提供凭证,我更喜欢使用环境变量
GOOGLE\u APPLICATION\u CREDENTIALS

在操作系统中创建一个名为
GOOGLE\u APPLICATION\u CREDENTIALS
的环境变量,该变量的值指向服务帐户密钥文件
D:\GCP\CREDENTIALS\blahblah-04e8fd0245b8.json


但是,如果它在您自己的计算机上,您甚至可以不使用服务帐户密钥文件(这不是真正安全的,我解释了为什么),您可以使用您自己的凭据。为此,只需像下面这样创建一个应用程序默认凭据(ADC)
gcloud auth application default login

谢谢。正如你所说,它通过将凭证作为参数传递而起作用。我创建了环境变量,并将json文件作为值传递,但这不起作用,因为您使用的是Windows操作系统,而且它是Windows操作系统,您在设置环境变量后是否重新启动了计算机?