我有一个python ML进程,它使用环境变量BigQuery
指向的本地json
文件连接到GOOGLE_APPLICATION_CREDENTIALS
(该文件包含google提供的密钥,请参见{ {3}})
在本地运行时,效果很好。
我现在正在寻找通过authentication getting-started部署模型的方法,特别是使用shell命令gcloud ml-engine jobs submit training
进行部署。
但是,在运行过程并查看console.cloud.google.com/logs/viewer
中的日志后,我发现gcloud无法访问Bigquery
,并且出现以下错误:
google.auth.exceptions.DefaultCredentialsError: File:
/Users/yehoshaphatschellekens/Desktop/google_cloud_xgboost/....-.....json was not found.
当前,我不认为gcloud ml-engine jobs submit training
随身携带Json文件(我认为gcloud可以自动访问BigQuery,我想不是)
一个可选的解决方法是将个人.json文件保存到另一个子包文件夹中的python依存关系中(请参见Google's Ml engine)并导入。
此解决方案是否可行/安全?
此问题还有其他解决方法吗?
答案 0 :(得分:2)
路径应为绝对路径,在Windows中应使用反斜杠:
GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\[FILE_NAME].json"
在您的Python代码中以这种方式设置:
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = "C:\PATH.JSON"
带有Google翻译API here的示例。
答案 1 :(得分:1)
我最终要做的是将json上载到gcloud
存储桶,然后在每次启动ML引擎训练过程时都将其上载到我的项目中:
os.system('gsutil cp gs://secured_bucket.json .')
os.environ[ "GOOGLE_APPLICATION_CREDENTIALS"] = "......json"