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

使用pd.read_csv从Google Cloud导入文件时遇RefreshError报错求助

解决pd.read_csv读取GCS文件时的RefreshError问题

这个错误是因为代码默认尝试访问Google Compute Engine(GCE)元数据服务获取认证凭据,但当前运行环境并非GCE实例(比如本地开发、非GCP云环境),导致元数据服务器不可达。以下是直接的解决方法:

方法1:显式指定GCP服务账号凭据

  • 从GCP控制台下载服务账号的JSON密钥文件
  • 通过环境变量或代码加载凭据:
    import os
    import pandas as pd
    
    # 方法A:设置环境变量指向密钥文件
    os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "/绝对路径/到/你的/service-account-key.json"
    
    # 读取GCS文件
    df = pd.read_csv("gs://你的存储桶名称/目标文件.csv")
    
    或者直接在代码中加载:
    from google.cloud import storage
    import pandas as pd
    
    storage_client = storage.Client.from_service_account_json("/绝对路径/到/你的/service-account-key.json")
    df = pd.read_csv("gs://你的存储桶名称/目标文件.csv")
    

方法2:使用gcloud CLI生成默认凭据

如果是本地开发环境,可通过gcloud命令行工具生成应用默认凭据,避免手动配置密钥:

gcloud auth application-default login

执行后按提示完成登录,代码会自动读取生成的凭据,无需额外设置。

方法3:禁用元数据服务自动检测(进阶)

通过配置google.auth的选项,强制跳过元数据服务检测,直接使用其他凭据来源:

import google.auth
from google.auth.transport.requests import Request

# 显式获取凭据,跳过元数据服务
credentials, project_id = google.auth.default(
    scopes=["https://www.googleapis.com/auth/cloud-platform"],
    request=Request()
)
# 后续读取文件逻辑不变
df = pd.read_csv("gs://你的存储桶名称/目标文件.csv")

额外检查

  • 确认当前环境网络可访问GCP存储服务,无防火墙或代理拦截GCS请求
  • 确保服务账号拥有存储桶的storage.objects.get权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 01:28:11