【问题标题】:Python unable to Fetch GOOGLE_APPLICATION_CREDENTIALS from Environment Variable (Windows)Python 无法从环境变量中获取 GOOGLE_APPLICATION_CREDENTIALS (Windows)
【发布时间】:2021-09-16 01:12:54
【问题描述】:

我想用 Python 探索 Google Big-Query,并且根据 tutorial 我已经设置了一个 Google Cloud 帐户(免费层),并生成了一个密钥。 JSON 文件存储在D:\keys\quixotic-folio-318907-64bfdccfb050.json

Windows-10 中的 ENVIRONMENT VARIABLES 也添加在 System Variables 下的GOOGLE_APPLICATION_CREDENTIALS 下:

但是,每当我尝试初始化客户端时,它都会引发错误 - File Not Found:

> from google.cloud import storage
> storage.Client(project = "quixotic-folio-318907")

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "D:\Anaconda3\lib\site-packages\google\cloud\storage\client.py", line 123, in __init__
    super(Client, self).__init__(
  File "D:\Anaconda3\lib\site-packages\google\cloud\client.py", line 319, in __init__
    Client.__init__(
  File "D:\Anaconda3\lib\site-packages\google\cloud\client.py", line 178, in __init__
    credentials, _ = google.auth.default(scopes=scopes)
  File "D:\Anaconda3\lib\site-packages\google\auth\_default.py", line 454, in default
    credentials, project_id = checker()
  File "D:\Anaconda3\lib\site-packages\google\auth\_default.py", line 221, in _get_explicit_environ_credentials
    credentials, project_id = load_credentials_from_file(
  File "D:\Anaconda3\lib\site-packages\google\auth\_default.py", line 107, in load_credentials_from_file
    raise exceptions.DefaultCredentialsError(
google.auth.exceptions.DefaultCredentialsError: File D:\keys\quixotic-folio-318907-64bfdccfb050.json; was not found.

我尝试了os 方法,正如here 建议的那样,它运行良好:

> import os
> from google.cloud import storage
> os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = "D:\keys\quixotic-folio-318907-64bfdccfb050.json"
> storage.Client(project = "quixotic-folio-318907")
<google.cloud.storage.client.Client object at 0x000002448A4E8AF0>

我有以下问题:

  1. 这是预期行为吗?为什么?
  2. 如何确保不必专门设置 os.environ['GOOGLE_APPLICATION_CREDENTIALS'],因为它已在系统变量下定义?

【问题讨论】:

  • 您可以尝试从 env 变量值中删除尾随分号吗?生成的错误也有尾随分号,但是当您使用 storage 单独测试时,您没有指定分号;这可能是导致此错误的原因,因为它正在尝试使用分号搜索文件名。
  • 是的,这解决了问题!谢谢,@AKS。印象中;是用来分隔不同变量的!

标签: python windows google-cloud-platform environment-variables


【解决方案1】:

删除

;

在环境变量中路径的末尾。

编辑:用户 AKS 比我快。 @AKS:如果您在答案中写下您的评论,它可以被标记为已解决。

【讨论】:

    猜你喜欢
    • 2012-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    相关资源
    最近更新 更多