如何在 python 的 gcloud 中覆盖 GOOGLE_APPLICATION_CREDENTIALS

How to overwrite GOOGLE_APPLICATION_CREDENTIALS in gcloud for python

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

并且在寻找服务帐户 JSON 的 gloud 路径方面存在问题。 我尝试使用 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

那么,我该如何处理呢?

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

这只是为了澄清 Garrett Jones 的回答。这里可能会出现一些微妙的混淆:

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

GOOGLE_APPLICATION_CREDENTIALS = "GOOGLE_APPLICATION_CREDENTIALS"

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

环境变量可以在环境中使用OS-特定的方式设置,或者使用python本身,它可以在程序运行时修改环境运行(这就是Adam 对 Garrett 的回答的评论正在使用 os.environ).

进行演示