谷歌云存储的gcsfs抛出错误

问题描述 投票:0回答:1

我正在尝试使用名为 ml4floods 的 python 工具将 google Earth 引擎数据导出到我的 google 云存储桶。它在后端使用 gcsfs 来完成此任务。

但是当我像这样设置所有必要的环境变量时

os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="/home/omer/sat/application_default_credentials.json"
os.environ["GS_USER_PROJECT"] = "Floods-analysis"
bucket_name = "floodanalysis"

并运行我的代码,我得到以下错误回溯:

     25 filename = f"{path_to_export}albania_ts_{date}"
     26 desc=f"albania_ts_{date}"
---> 27 task = ee_download.mayberun(
     28                     filename,
     29                     desc,
     30                     lambda: img_export,
     31                     export_task_fun_img,
     32                     overwrite=False,
     33                     dry_run=False,
     34                     bucket_name=bucket_name,
     35                     verbose=2,
     36                 )
     37 if task is not None:
     38     tasks.append(task)

File ~/miniconda3/envs/ml4gdal/lib/python3.11/site-packages/ml4floods/data/ee_download.py:299, in mayberun(filename, desc, function, export_task, overwrite, dry_run, verbose, bucket_name)
    296 if bucket_name is not None:
    297     fs = get_filesystem("gs://")
--> 299     files_in_bucket = fs.glob(f'gs://{bucket_name}/{filename}*')
    300     if len(files_in_bucket) > 0:
    301         if overwrite:
...
    948     "should be str, int or float, got {!r} "
    949     "of type {}".format(v, cls)
    950 )

TypeError: Invalid variable type: value should be str, int or float, got None of type <class 'NoneType'>

我检查了所有的系统变量、项目信息和其他东西,但它们都没有问题。

我的凭证 JSON 文件是这样的:

  "client_id": "<removed this>.apps.googleusercontent.com",
  "client_secret": "<removed this>",
  "quota_project_id": "floods-analysis",
  "refresh_token": "<removed-this>",
  "type": "authorized_user"
}
google-cloud-storage
1个回答
0
投票

正如 John Hanley 评论的那样,我在环境变量中使用 OAuth 客户端凭据而不是服务帐户凭据

"GOOGLE_APPLICATION_CREDENTIALS"

这是唯一的问题,一旦我解决了它,一切都变得好起来。

© www.soinside.com 2019 - 2024. All rights reserved.