如何在gcloud中为python覆盖GOOGLE_APPLICATION_CREDENTIALS

时间:2015-11-05 12:50:32

标签: python django google-cloud-storage gcloud

我正在使用gcloud为Django编写自定义文件存储。

在gloud路径中遇到问题,它寻找服务帐户JSON。 我尝试使用GOOGLE_APPLICATION_CREDENTIALS变量:

GOOGLE_APPLICATION_CREDENTIALS = os.path.join(BASE_DIR, 'google.json')

但它没有效果。它总是在我的项目的上层文件夹中查找google.json(如果我把它放在那里它工作正常)。我收到了这个错误:

oauth2client.client.ApplicationDefaultCredentialsError: File ../DjangoProjects/folder/google.json (pointed by GOOGLE_APPLICATION_CREDENTIALS environment variable) does not exist!

所以我的项目在File ../DjangoProjects/folder/project_folder/google.json

那么,我该如何处理呢?

2 个答案:

答案 0 :(得分:3)

这只是为了澄清加勒特琼斯的回答。这里可能会出现一些微妙的混淆:

在给出的代码示例中,GOOGLE_APPLICATION_CREDENTIALS是一个python变量名。它的应该是指向文件的环境变量的名称

GOOGLE_APPLICATION_CREDENTIALS = "GOOGLE_APPLICATION_CREDENTIALS"

在此示例中,我们假设有一个名为“GOOGLE_APPLICATION_CREDENTIALS”的环境变量,其值为文件路径(类似“/home/anon/workspace/myProject/google_creds.json”)

可以使用特定于操作系统的方法在环境中设置环境变量,也可以使用python本身,这可以在程序运行时修改环境(这是Adam对Garrett的答案的评论,使用os.environ进行演示)。

答案 1 :(得分:2)

GOOGLE_APPLICATION_CREDENTIALS应该具有指向文件的环境变量的名称;它本身不应该有文件路径。此变量的默认值只是“GOOGLE_APPLICATION_CREDENTIALS”。如果您将名称为GOOGLE_APPLICATION_CREDENTIALS的环境变量设置为您希望它使用的文件路径,则它应该适合您。