我正在使用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
那么,我该如何处理呢?
答案 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的环境变量设置为您希望它使用的文件路径,则它应该适合您。