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

使用ml4floods导出GEE数据至GCS时gcsfs抛出类型错误

使用ml4floods导出GEE数据至GCS时触发TypeError错误

问题背景

尝试用Python工具ml4floods将Google Earth Engine(GEE)数据导出到Google Cloud Storage(GCS)存储桶,工具后端依赖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"
}

解决思路

  • 检查filename变量有效性:错误发生在拼接GCS路径时,大概率是path_to_export或date变量为None,导致生成的filename包含空值。打印这两个变量的值,确认均为有效字符串。
  • 手动验证gcsfs连接:直接初始化gcsfs并测试访问存储桶,排除凭证或项目配置问题:
    import gcsfs
    fs = gcsfs.GCSFileSystem(project="Floods-analysis", token="/home/omer/sat/application_default_credentials.json")
    print(fs.ls("gs://floodanalysis"))
    
  • 排查版本兼容性:当前ml4floods可能与Python3.11、gcsfs版本不兼容。尝试降级到Python3.9/3.10,同时将gcsfs版本固定到2023.6.0左右。
  • 显式传递项目参数:若允许修改ml4floods源码,在ee_download.py的get_filesystem调用中显式传入项目ID:
    fs = get_filesystem("gs://", project=os.environ.get("GS_USER_PROJECT"))
    
    强制指定项目,避免依赖环境变量自动读取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 12:52:46