Python无法从环境变量(Windows)获取GOOGLE_应用程序_凭据

2024-05-14 22:40:16 发布

您现在位置:Python中文网/ 问答频道 /正文

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

enter image description here

Windows-10中的环境变量也添加在系统变量下的GOOGLE_APPLICATION_CREDENTIALS下:

enter image description here

但是,每当我尝试初始化客户端时,它都会抛出一个错误-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'],因为它已经在系统变量下定义了

Tags: inpyclientcloudlibpackagesgoogleline
1条回答
网友
1楼 · 发布于 2024-05-14 22:40:16

移除

;

在环境变量中的路径末尾

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

相关问题 更多 >

    热门问题