我正在使用xarray来使用xarray.open_mfdataset连接多个netcsf文件.然而,当我try 运行我的代码时,我会遇到以下错误:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Cell In[21], line 1
----> 1 ds = xarray.open_mfdataset('oisst_*.nc', combine="nested", concat_dim="time")

File ~/miniconda3/lib/python3.10/site-packages/xarray/backends/api.py:1056, in open_mfdataset(paths, chunks, concat_dim, compat, preprocess, engine, data_vars, coords, combine, parallel, join, attrs_file, combine_attrs, **kwargs)
   1053     open_ = open_dataset
   1054     getattr_ = getattr
-> 1056 datasets = [open_(p, **open_kwargs) for p in paths]
   1057 closers = [getattr_(ds, "_close") for ds in datasets]
   1058 if preprocess is not None:

File ~/miniconda3/lib/python3.10/site-packages/xarray/backends/api.py:1056, in <listcomp>(.0)
   1053     open_ = open_dataset
   1054     getattr_ = getattr
-> 1056 datasets = [open_(p, **open_kwargs) for p in paths]
   1057 closers = [getattr_(ds, "_close") for ds in datasets]
   1058 if preprocess is not None:

File ~/miniconda3/lib/python3.10/site-packages/xarray/backends/api.py:579, in open_dataset(filename_or_obj, engine, chunks, cache, decode_cf, mask_and_scale, decode_times, decode_timedelta, use_cftime, concat_characters, decode_coords, drop_variables, inline_array, chunked_array_type, from_array_kwargs, backend_kwargs, **kwargs)
    572 overwrite_encoded_chunks = kwargs.pop("overwrite_encoded_chunks", None)
    573 backend_ds = backend.open_dataset(
    574     filename_or_obj,
    575     drop_variables=drop_variables,
    576     **decoders,
    577     **kwargs,
    578 )
--> 579 ds = _dataset_from_backend_dataset(
    580     backend_ds,
    581     filename_or_obj,
    582     engine,
    583     chunks,
    584     cache,
    585     overwrite_encoded_chunks,
    586     inline_array,
    587     chunked_array_type,
    588     from_array_kwargs,
    589     drop_variables=drop_variables,
    590     **decoders,
    591     **kwargs,
    592 )
    593 return ds

File ~/miniconda3/lib/python3.10/site-packages/xarray/backends/api.py:372, in _dataset_from_backend_dataset(backend_ds, filename_or_obj, engine, chunks, cache, overwrite_encoded_chunks, inline_array, chunked_array_type, from_array_kwargs, **extra_tokens)
    370     ds = backend_ds
    371 else:
--> 372     ds = _chunk_ds(
    373         backend_ds,
    374         filename_or_obj,
    375         engine,
    376         chunks,
    377         overwrite_encoded_chunks,
    378         inline_array,
    379         chunked_array_type,
    380         from_array_kwargs,
    381         **extra_tokens,
    382     )
    384 ds.set_close(backend_ds._close)
    386 # Ensure source filename always stored in dataset object

File ~/miniconda3/lib/python3.10/site-packages/xarray/backends/api.py:320, in _chunk_ds(backend_ds, filename_or_obj, engine, chunks, overwrite_encoded_chunks, inline_array, chunked_array_type, from_array_kwargs, **extra_tokens)
    309 def _chunk_ds(
    310     backend_ds,
    311     filename_or_obj,
   (...)
    318     **extra_tokens,
    319 ):
--> 320     chunkmanager = guess_chunkmanager(chunked_array_type)
    322     # TODO refactor to move this dask-specific logic inside the DaskManager class
    323     if isinstance(chunkmanager, DaskManager):

File ~/miniconda3/lib/python3.10/site-packages/xarray/namedarray/parallelcompat.py:110, in guess_chunkmanager(manager)
    108 if isinstance(manager, str):
    109     if manager not in chunkmanagers:
--> 110         raise ValueError(
    111             f"unrecognized chunk manager {manager} - must be one of: {list(chunkmanagers)}"
    112         )
    114     return chunkmanagers[manager]
    115 elif isinstance(manager, ChunkManagerEntrypoint):
    116     # already a valid ChunkManager so just pass through

ValueError: unrecognized chunk manager dask - must be one of: []

我正在使用以下代码:

import netCDF4
import numpy
import xarray

ds = xarray.open_mfdataset('oisst_*.nc', combine="nested", concat_dim="time")

我引用的是this medium page这个代码.

我已经try 了this种现有方法.我按照OP的建议将xArray降级到2022.11.0,然后降级到0.21.1,重新安装dask并将xArray升级回2024.2.0,但发现没有成功解决这个问题.

我的xray和dask当前版本是:

INSTALLED VERSIONS
------------------
commit: None
python: 3.10.10 (main, Mar 21 2023, 13:41:39) [Clang 14.0.6 ]
python-bits: 64
OS: Darwin
OS-release: 23.4.0
machine: x86_64
processor: i386
byteorder: little
LC_ALL: None
LANG: None
LOCALE: (None, 'UTF-8')
libhdf5: 1.12.2
libnetcdf: 4.9.3-development

xarray: 2024.2.0
pandas: 1.5.3
numpy: 1.23.5
scipy: 1.10.1
netCDF4: 1.6.5
pydap: None
h5netcdf: None
h5py: 3.8.0
Nio: None
zarr: None
cftime: 1.6.3
nc_time_axis: None
iris: None
bottleneck: None
dask: 2024.4.1
distributed: None
matplotlib: 3.7.1
cartopy: None
seaborn: 0.12.2
numbagg: None
fsspec: 2024.3.1
cupy: None
pint: None
sparse: None
flox: None
numpy_groupies: None
setuptools: 69.1.1
pip: 24.0
conda: 23.3.1
pytest: None
mypy: None
IPython: 8.12.0
sphinx: None

推荐答案

我try 卸载xArray和dask并重新安装它们的最新版本.继续重新启动我的内核和jupyter笔记本并重新执行代码.此后工作良好,没有任何问题.

我正在使用的xray和dask的当前版本如下:

xarray: 2024.3.0, numpy: 1.23.5 , netCDF4: 1.6.5, dask: 2024.4.2

Python相关问答推荐

有什么方法可以避免使用许多if陈述

Odoo -无法比较使用@api.depends设置计算字段的日期

用gekko解决的ADE方程系统突然不再工作,错误消息异常:@错误:模型文件未找到.& &

无法使用equals_html从网址获取全文

Python Hashicorp Vault库hvac创建新的秘密版本,但从先前版本中删除了密钥

为什么符号没有按顺序添加?

如何在python polars中停止otherate(),当使用when()表达式时?

从spaCy的句子中提取日期

改进大型数据集的框架性能

为什么Django管理页面和我的页面的其他CSS文件和图片都找不到?'

旋转多边形而不改变内部空间关系

Maya Python脚本将纹理应用于所有对象,而不是选定对象

如何使用使用来自其他列的值的公式更新一个rabrame列?

为什么常规操作不以其就地对应操作为基础?

Autocad使用pyautocad/comtypes将对象从一个图形复制到另一个图形

python的文件. truncate()意外地没有截断'

如何在Python中自动创建数字文件夹和正在进行的文件夹?

Python日志(log)库如何有效地获取lineno和funcName?

如何在Python中创建仅包含完整天数的月份的列表

将数据从一个单元格保存到Jupyter笔记本中的下一个单元格