You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

连接Google BigQuery时无法定位私钥文件的问题求助

解决BigQuery本地私钥文件找不到及权限疑问

一、FileNotFoundError 排查与解决

这个错误直接指向私钥文件路径问题,按以下步骤逐一验证:

  • 确认路径拼写绝对正确
    Mac/Linux系统路径区分大小写,手动从文件管理器复制该JSON文件的绝对路径(右键文件→复制路径),替换代码中的路径,避免手动输入的拼写错误。

  • 验证文件是否真实存在
    打开Downloads文件夹,确认transcript_test.json文件确实存在,没有被误删、移动到其他目录,或是下载时中断导致文件缺失。

  • 检查文件读取权限
    打开终端执行以下命令,查看当前用户对该文件的读取权限:

    ls -l /Users/alh/Downloads/transcript_test.json
    

    如果输出中当前用户没有读权限(比如权限列是-rw-------且不是当前用户),执行以下命令赋予读权限:

    chmod 644 /Users/alh/Downloads/transcript_test.json
    
  • 代码中先做路径校验
    可以在加载凭证前加入路径检查,提前定位问题:

    import os
    key_path = '/Users/alh/Downloads/transcript_test.json'
    if not os.path.exists(key_path):
        raise FileNotFoundError(f"私钥文件不存在:{key_path}")
    

二、权限疑问解答

BQ Owner权限完全足够,不需要Admin权限。
Owner角色已经包含了BigQuery资源的所有操作权限(包括读取表数据、创建/修改表、管理数据集等),Admin是项目级的超级权限,对于连接并读取BigQuery表的需求来说过度且不必要。

优化后的完整示例代码

import sys
import os
from google.oauth2 import service_account
from google.cloud import bigquery
from google.cloud import language
import pandas_gbq as pd

# 路径校验
key_path = '/Users/alh/Downloads/transcript_test.json'
if not os.path.exists(key_path):
    raise FileNotFoundError(f"私钥文件不存在,请检查路径:{key_path}")

# 加载凭证并建立连接
credentials = service_account.Credentials.from_service_account_file(key_path)
project_id = 'dgi-prd'
client = bigquery.Client(credentials=credentials, project=project_id)

# 测试读取数据(替换成你的数据集和表名)
test_query = "SELECT * FROM `dgi-prd.your_dataset.your_table` LIMIT 5"
result_df = client.query(test_query).to_dataframe()
print(result_df)

内容的提问来源于stack exchange,提问作者Wesson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 05:47:24