为了在Windows下读取grib文件,在Anaconda环境下安装了xarray+cgrib+eccodes。参考WIndows下xarray+cgrib读取grib文件。
在Anaconda下新建虚拟环境安装相应的依赖库,参考Windows下Anaconda的下载,安装与使用。程序在Prompt中正确运行。但在Pycharm中新建project,更换Anaconda新建的虚拟环境下的python解释器运行,报错ECCODES ERROR : Unable to find boot.def. Context path=D:/bld/eccodes_1593015095851/_h_env/Library/share/eccodes/definitions.
一、在Anaconda的Prompt中运行程序
程序如下:
import xarray as xr
filein = 'F:/Zhu/download/2000-2015/FNL/FNL2000/fnl_20000505_00_00'
data = xr.open_dataset(filein, engine='cfgrib', backend_kwargs={'filter_by_keys':{'typeOfLevel': 'isobaricInhPa','level':500}})
print(data)
在Prompt下新建的虚拟环境中运行python …py,结果正常出现。
二、在pycharm中更换Anaconda解释器报错及解决
新建一个Project,将项目运行的python解释器更换为Anaconda虚拟环境下的解释器。
开始Project Interpreter是默认下载的python解释器,然后在右边的Add中添加新的解释器:
然后在Existing environment中选择你的Anaconda中新建的虚拟环境中的python解释器所在位置,应用即可。
运行上述程序,报错:
问题出现在eccodes环境变量的配置,在这篇博客中提到需要配置eccodes的环境变量:
但操作完也没什么用。
解决办法:最后在代码中夹一行设置变量的代码,就完美解决了。
import os
os.environ['ECCODES_DEFINITION_PATH']='E:/Anaconda3/envs/tcintensity/Library/share/eccodes/definitions'
就是设置ECCODES_DEFINITION_PATH,这个路径是你在Anaconda中新建虚拟环境下安装的eccodes的路径。这样问题就解决了。
再次运行代码:
问题主要是出现在这个eccodes的路径上,有的博客说eccodes不需要配置环境变量,但在编译器中运行代码的时候找不到eccodes,这时候就可以把路径加在代码中,就解决问题了。