使用NumPy 2.0与MetPy 1.6时遇AttributeError问题求助
NumPy 2.0 + MetPy 1.6 触发 AttributeError 的解决办法
从报错栈能明确看到,问题不是MetPy本身不兼容NumPy 2.0,而是MetPy依赖的xarray版本太旧,还在使用NumPy 2.0已移除的np.unicode_。
解决步骤
直接升级xarray到支持NumPy 2.0的版本:
pip install --upgrade xarray用conda环境的话:
conda update xarrayxarray在2024年3月之后的版本(比如v2024.3.0及以上)已经把
np.unicode_替换成了np.str_,完全适配NumPy 2.0。补充说明:MetPy 1.6确实做了NumPy 2.0的兼容适配,但它对xarray的版本依赖没有强制要求到兼容NumPy 2.0的版本,所以会出现间接依赖拖后腿的情况,这类问题在NumPy大版本更新初期很常见,不少用户都遇到过。
复现代码
#!/home/ccc/miniconda3/bin/python import numpy as np from metpy.units import units distance = np.arange(1, 5) * units.meters
完整报错信息
Traceback (most recent call last): File "/home/ccc/t1.py", line 3, in <module> from metpy.units import units File "/home/ccc/miniconda3/lib/python3.12/site-packages/metpy/__init__.py", line 13, in <module> from .xarray import * # noqa: F401, F403, E402 ^^^^^^^^^^^^^^^^^^^^^ File "/home/ccc/miniconda3/lib/python3.12/site-packages/metpy/xarray.py", line 27, in <module> import xarray as xr File "/home/ccc/miniconda3/lib/python3.12/site-packages/xarray/__init__.py", line 1, in <module> from xarray import testing, tutorial File "/home/ccc/miniconda3/lib/python3.12/site-packages/xarray/testing.py", line 10, in <module> from xarray.core import duck_array_ops, formatting, utils File "/home/ccc/miniconda3/lib/python3.12/site-packages/xarray/core/duck_array_ops.py", line 36, in <module> from xarray.core import dask_array_ops, dtypes, nputils File "/home/ccc/miniconda3/lib/python3.12/site-packages/xarray/core/dask_array_ops.py", line 3, in <module> from xarray.core import dtypes, nputils File "/home/ccc/miniconda3/lib/python3.12/site-packages/xarray/core/dtypes.py", line 43, in <module> (np.bytes_, np.unicode_), # numpy promotes to unicode ^^^^^^^^^^^ File "/home/ccc/miniconda3/lib/python3.12/site-packages/numpy/__init__.py", line 400, in __getattr__ raise AttributeError( AttributeError: `np.unicode_` was removed in the NumPy 2.0 release. Use `np.str_` instead.
内容的提问来源于stack exchange,提问作者psuchuck
相关产品推荐
相关产品推荐

