- 积分
- 9620
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2017-5-6
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 mozhiting 于 2019-4-22 23:24 编辑
ncl 转到python平台已经有一段时间了,从安装到读文件,真的是步步艰辛哪!摸索许久,也终于有了点心得,以前在这个平台得到许多帮助,现在作为第一批吃螃蟹的人(不是第一批也算比较早吧!),我也来贡献一下自己小小的力量吧!
1、就目前来说,PyNIOn ,PyNGL这两个包只能安装在linux系统下,与python能不能安装在windows下无关,即使是VS下的powershell即使有着类似linux的外壳,也是不可以滴。
2、对于windows系统来说,可以安装在Ubuntu子系统中(子系统怎么装的就不用我废话了吧),安装命令是:
conda create -n pyn_env -c conda-forge pynio pyngl
其中conda是一个包管理器,可以创建一个python的虚拟环境,然后将各个工具包打包进去,create就是创建(当你已经有了一个python虚拟环境,需要往里面安装的时候,只需把create换为install即可),-n也可以写成--name,意思是指明虚拟环境的名字,pyn_env就是我给这个虚拟环境起的名字,-c也可以写成--channel,是指从anaconda的各个通道里下载所需的包,conda-forge是anaconda下其中一个通道,pynio和pyngl是需要安装的包,同样你还可以在后面空格添加python,netcdf,scipy,xarray等可能用到的包,可以通过python=3的方式来指明安装的版本。注意:可以看到,conda命令的特点,-n 是--name的简写方法,其他如-c --channel -h --help亦是同理;另外,-n 是声明需要个名字,pyn_env是具体的名字,-c是声明从通道下载, conda-forge则是具体的通道,后面没有再加带-的声明,因此它就认为是需要安装的包了。
3、安装成功以后,可以通过conda env list来看一下虚拟环境的情况,如果你这是第一次用conda创建环境的话,应该只有两个,一个是base这个是一有conda就默认自带的,另外一个是新建的pyn_env(具体看你给它起什么名字了),如果你之前用conda装过ncl应该还会有一个类似于ncl_table的环境。
4、如果在list中有pyn_env这个环境了,就可以通过conda activate pyn_env(或source activate pyn_env,如果是windows系统就去掉source),来激活pyn_env这个环境(默认的环境是base),可以用conda deactivate env_name来退出当前环境。
进入某个环境后,你会看到在路径前面多了个(pyn_env)。
5、将包安装进某个环境,可以通过conda install -n pyn_env -c conda-forge netcdf4的方式,但是也可以先激活该环境,再用conda install netcdf4安装。
6、在某个环境下,使用conda list来查看该环境的包的列表,如果pynio和pyngl在列表中,说明安装成功了
7、输入python就可以进入python命令行模式(如果有多个python版本,可以通过python2来指明版本)
8、导入包,import Nio,Ngl
9、读取数据 f = Nio.open_file("Jsst.nc", "r")
(Jsst.nc是我提前放在家目录下的文件,可以在没进入python之前通过ls命令来检查一下是否已在家目录下,文件是在这下的,因此绝对没问题http://www.ncl.ucar.edu/Applications/Data/)。
结果出现报错信息: file format not supported or file is corrupted
解决办法是用exit()退出python,然后输入chmod 777 Jsst.nc来修改文件的权限
再次进入python
import Nio
f = Nio.open_file("Jsst.nc", "r")
问题解决。
不要问我为什么文件损毁要去修改文件的权限,也不要问我是怎么发现的,(你要真想知道我也可以告诉你,当我尝试用netCDF4来读文件的时候,发现提示pemission denied,根据以往的经验可知,是文件权限问题,于是就用chmod 777修改了文件权限,进入python后发现netCDF4就可以正常读取这个文件了,于是我就想干嘛不再用Nio试一试呢,然后就成功了。由此可见ncl转到python的尿性,明明是权限问题,非得告诉我文件损毁了。)
预祝大家,在学习这个工具时,一切顺利!也欢迎大家前来交流~
|
|