Cartopy (0.14.2) / MetPy (0.12.2) 使用 Google Colab 时出现 parse(cf) 错误
Cartopy (0.14.2) / MetPy (0.12.2) parse(cf) error when using Google Colab
我有一个学生在使用旧版本的 MetPy 和 Cartopy 时面临与其他人报告的问题类似的问题。
问题出在 metpy 下的 parse_cf() 命令。它是在 Google Colaboratory 下发生的,我对此经验不多。在其他平台(anaconda、miniconda、自制软件等)上一切正常
我看到的以前的反馈是指从 0.18.* 回滚 cartopy 库的版本。我也遵循了之前发布的有关 Shapely 的指南,但我们似乎无法更改 Google CoLab 中的 cartopy 或 metpy 版本。
环境和 python 库的版本信息,后面是代码和错误。
我在这里不知所措,并尽我所能为我的学生解决了这个问题。我们都将不胜感激。
系统和包信息
MetPy 0.12.2
Cartopy 0.14.2
3.6.9 (default, Oct 8 2020, 12:12:24)
[GCC 8.4.0]
Linux d8a71c5140a6 4.19.112+ #1 SMP Thu Jul 23 08:00:38 PDT 2020 x86_64 x86_64 x86_64 GNU/Linux
Linux-4.19.112+-x86_64-with-Ubuntu-18.04-bionic
python-cartopy/bionic,now 0.14.2+dfsg1-2build3 amd64 [installed]
python3-cartopy/bionic,now 0.14.2+dfsg1-2build3 amd64 [installed]
要复制的代码
import numpy as np
import cartopy as c
import metpy as metpy
file_218 = "https://www.ncei.noaa.gov/thredds/dodsC/model-nam218/202011/20201121/nam_218_20201121_0000_000.grb2"
ds218 = xr.open_dataset(file_218)
ds218 = ds218.metpy.parse_cf()
错误信息
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-9-4362f5b26659> in <module>()
9 file_218 = "https://www.ncei.noaa.gov/thredds/dodsC/model-nam218/202011/20201121/nam_218_20201121_0000_000.grb2"
10 ds218 = xr.open_dataset(file_218)
---> 11 ds218 = ds218.metpy.parse_cf()
1 frames
/usr/local/lib/python3.6/dist-packages/metpy/xarray.py in parse_cf(self, varname, coordinates)
510 """
511 from .cbook import iterable
--> 512 from .plots.mapping import CFProjection
513
514 if varname is None:
/usr/local/lib/python3.6/dist-packages/metpy/plots/__init__.py in <module>()
17 logger = logging.getLogger(__name__)
18
---> 19 __all__ = ctables.__all__[:] # pylint: disable=undefined-variable
20 __all__.extend(declarative.__all__) # pylint: disable=undefined-variable
21 __all__.extend(skewt.__all__) # pylint: disable=undefined-variable
NameError: name 'ctables' is not defined
这里的核心问题是 0.14.2 与 MetPy 一起工作太旧了——尽管它崩溃的事实是一个错误,将在即将发布的 1.0 版本中修复。要在 Collab 上安装更新版本的 CartoPy,这个方法对我有用(在单元格中键入这些命令):
!pip install metpy
!apt-get -qq install libproj-dev libgeos-dev
!pip install shapely --no-binary shapely cartopy
我有一个学生在使用旧版本的 MetPy 和 Cartopy 时面临与其他人报告的问题类似的问题。
问题出在 metpy 下的 parse_cf() 命令。它是在 Google Colaboratory 下发生的,我对此经验不多。在其他平台(anaconda、miniconda、自制软件等)上一切正常
我看到的以前的反馈是指从 0.18.* 回滚 cartopy 库的版本。我也遵循了之前发布的有关 Shapely 的指南,但我们似乎无法更改 Google CoLab 中的 cartopy 或 metpy 版本。
环境和 python 库的版本信息,后面是代码和错误。
我在这里不知所措,并尽我所能为我的学生解决了这个问题。我们都将不胜感激。
系统和包信息
MetPy 0.12.2
Cartopy 0.14.2
3.6.9 (default, Oct 8 2020, 12:12:24)
[GCC 8.4.0]
Linux d8a71c5140a6 4.19.112+ #1 SMP Thu Jul 23 08:00:38 PDT 2020 x86_64 x86_64 x86_64 GNU/Linux
Linux-4.19.112+-x86_64-with-Ubuntu-18.04-bionic
python-cartopy/bionic,now 0.14.2+dfsg1-2build3 amd64 [installed]
python3-cartopy/bionic,now 0.14.2+dfsg1-2build3 amd64 [installed]
要复制的代码
import numpy as np
import cartopy as c
import metpy as metpy
file_218 = "https://www.ncei.noaa.gov/thredds/dodsC/model-nam218/202011/20201121/nam_218_20201121_0000_000.grb2"
ds218 = xr.open_dataset(file_218)
ds218 = ds218.metpy.parse_cf()
错误信息
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-9-4362f5b26659> in <module>()
9 file_218 = "https://www.ncei.noaa.gov/thredds/dodsC/model-nam218/202011/20201121/nam_218_20201121_0000_000.grb2"
10 ds218 = xr.open_dataset(file_218)
---> 11 ds218 = ds218.metpy.parse_cf()
1 frames
/usr/local/lib/python3.6/dist-packages/metpy/xarray.py in parse_cf(self, varname, coordinates)
510 """
511 from .cbook import iterable
--> 512 from .plots.mapping import CFProjection
513
514 if varname is None:
/usr/local/lib/python3.6/dist-packages/metpy/plots/__init__.py in <module>()
17 logger = logging.getLogger(__name__)
18
---> 19 __all__ = ctables.__all__[:] # pylint: disable=undefined-variable
20 __all__.extend(declarative.__all__) # pylint: disable=undefined-variable
21 __all__.extend(skewt.__all__) # pylint: disable=undefined-variable
NameError: name 'ctables' is not defined
这里的核心问题是 0.14.2 与 MetPy 一起工作太旧了——尽管它崩溃的事实是一个错误,将在即将发布的 1.0 版本中修复。要在 Collab 上安装更新版本的 CartoPy,这个方法对我有用(在单元格中键入这些命令):
!pip install metpy
!apt-get -qq install libproj-dev libgeos-dev
!pip install shapely --no-binary shapely cartopy