代码之家  ›  专栏  ›  技术社区  ›  Bobby Heyer

尝试使用xarray组合文件时出现EntryPoints属性错误

  •  1
  • Bobby Heyer  · 技术社区  · 2 年前

    背景

    就在两个月前,我有一个工作的python脚本,我经常使用它将netcdf4天气文件组合在一起。

    然而,自从我最近更新了我的笔记本电脑,重新安装了python(根据I.T.政策为3.7)和最新的python库,并且脚本已经停止工作以来,似乎有一些东西被弃用了,这导致我的代码停止工作。

    问题

    我收到错误消息:AttributeError:“EntryPoints”对象没有属性“get”

    我所尝试的

    我提到了SO上的其他帖子( link , link )。从中我可以看出这个问题是由importlib元数据(v5.0.0.0+)引起的,它是标准python安装的一部分(包括3.7)(我的机器上有importlib-metadata-6.6.0)

    我尝试降级到旧版本(importlib元数据4.0.0),但这导致了不同的问题。

    我还要求I.T.将我的python更新到更高版本(3.9、3.10等)。但显然,这是一个可能需要很长时间才能完成的整个过程。

    请求的帮助

    任何人都知道我该如何解决这个问题。

    错误消息示例

    Traceback (most recent call last):
      File "C:/Users/User/PycharmProjects/project/python_script.py", line 59, in get_era5
        merge_netcdf4 = xr.open_mfdataset(list, combine='by_coords')
    
      File "C:/Users/User/PycharmProjects/project\venv\lib\site-packages\xarray\backends\api.py", line 908, in open_mfdataset
        datasets = [open_(p, **open_kwargs) for p in paths]
    
      File "C:/Users/User/PycharmProjects/project\venv\lib\site-packages\xarray\backends\api.py", line 908, in <listcomp>
        datasets = [open_(p, **open_kwargs) for p in paths]
    
      File "C:/Users/User/PycharmProjects/project\venv\lib\site-packages\xarray\backends\api.py", line 479, in open_dataset
        engine = plugins.guess_engine(filename_or_obj)
    
      File "C:/Users/User/PycharmProjects/project\venv\lib\site-packages\xarray\backends\plugins.py", line 110, in guess_engine
        engines = list_engines()
    
      File "C:/Users/User/PycharmProjects/project\venv\lib\site-packages\xarray\backends\plugins.py", line 105, in list_engines
        entrypoints = entry_points().get("xarray.backends", ())
    
    AttributeError: 'EntryPoints' object has no attribute 'get'
    

    示例代码

    for single_date in daterange(start_date, end_date):
        YYYY = single_date.strftime("%Y")
        MM = single_date.strftime("%m")
        DD = single_date.strftime("%d")
        fname = fpath + YYYY + MM + DD + '_era5.nc'
    
        list.append(fname)
    
    # Details
    lat_toplot = np.arange(25.25, 25.50, 0.25) # last number is exclusive
    lon_toplot = np.arange(140.25, 140.50, 0.25) # last number is exclusive
    
    merge_netcdf4 = xr.open_mfdataset(list, combine='by_coords').sel(longitude=lon_toplot, latitude=lat_toplot)
    
    1 回复  |  直到 2 年前
        1
  •  1
  •   Saxtheowl    2 年前

    您可能想尝试安装的特定版本 xarray 与您当前版本的兼容 importlib_metadata (6.6.0)。

    pip install xarray==0.17.0