为什么要花差不多半个月来研究这个,明明Linux比这个简单多了……
窃格瓦拉·瓶:学Linux是不可能学Linux的,这辈子都不可能喜欢命令行的,Win10说话又好听,我偷别人代码养你啊(?)
总之就是提不起兴趣学Linux,但是组里的绝大部分数据都是grib格式的,为了让自己能在Win10的溺爱下多摸鱼一会,只能想个办法找个借口了。
感谢来自英俊的Sonic师兄的帮助,以及网络上曾经写过相关教程的大佬们,参考链接见后。
我的情况:Windows10专业版,使用了Anaconda安装、管理相关的包,编译器则选择了JupyterLab。
下面介绍一下我的方法。
根据参考链接[1],最简单的方法就是利用xarray和cfgrib来打开grib文件了。文中提到要首先安装ECcodes这个包,还介绍了离线安装的步骤,我试了很多个eccodes的版本,尽管离线安装成功,但是在后续过程中仍然会报错:

如果直接安装eccodes,不是和上图里一样报了的错误,就是环境配置一直loading,最后帮我把所有安装的包都更新了一遍……
(说到这个真的把我气坏了,我刚开始根本不知道它在更新包,只看到整个屏幕都是进度条,我既不知道怎么暂停进程,又不敢直接关掉电脑,只能把电脑盖子合上物理断网……)

考虑到eccodes是cfgrib的依赖包,如果要安装cfgrib的话应该会自动帮我把eccodes也装了吧?于是我尝试直接安装cfgrib,确实没有报unknown的错误了,但是Solving environment又出问题了:

所以到底应该怎么办?
根据参考链接[2]以及Sonic师兄的谆谆教导,我得知了在 (base) 环境下安装包很容易冲突,因此可以像[2]中所说的,在 (base) 下输入以下代码,即可新建一个虚拟环境以安装cfgrib:
conda create -n cfgrib_env python=3.7.0
其中cfgrib_env是环境名称,可以修改为自己喜欢的名字;而python=(版本号)也可以改为自己需要的版本,此时我们就有了一个新的、版本为3.7.0的Python环境。
然后输入以下代码启动刚刚设定好的虚拟环境:
activate cfgrib_env
这个时候 (base) 就会变成 (cfgrib_env) 。但是,我们之前装好的xarray、cartopy是在 (base) 环境中安装的,于是要在激活了cfgrib_env的环境下,利用conda install ~~的命令,重新在新环境下进行安装我们需要的包——不要忘了装cfgrib哦。
搞了这么多东西,总应该能读取grib文件了吧?
但是,我们的编译器所处环境更新了吗?事实证明没有,我还是没有办法在编译器里import cfgrib。这个时候就要用到参考链接[3]和[4]的办法了。
ps. 也可参考链接
在 (base) 下安装anaconda的NB插件:
conda install nb_conda
然后,切换到新的环境(如cfgrib_env)中,安装Jupyter:
pip install jupyter
完成这两个步骤后,就会发现这个nb_conda到底有多nb了:这个插件可以让我们在JupyterLab里很方便的切换需要的环境——在打开代码前利用下拉菜单选择即可。


好了,让我们写代码验证一下是不是真的能打开grib文件并提取数据来画图吧!
import
确实是可以出图的(难掩激动):

最后,让我们大声喊一句Python永远滴神吧!(?)
谢谢你的阅读!
参考
^[1] https://www.jianshu.com/p/683d3bb5b3cd
^[2] https://blog.csdn.net/weixin_46604505/article/details/106910440
^[3] https://blog.csdn.net/w55100/article/details/88925697
^[4] https://zhuanlan.zhihu.com/p/139776843
^https://blog.csdn.net/xfdywy/article/details/80113079