自从NCL停更之后,python的知名度都不断提高了,我也开始了python学习之旅,但是还没开始,就被如何安装Pyngl和Pynio给困住了。网上和官网给的教程都是Linux系统或者OS系统,有老板服务器的同学压根不用担心这个问题,没有任何影响。但是没有服务器就有点惆怅了。

为什么Windows不能直接安装

我想到电脑上安装了Aanconda,那能不能安装PyNIO和PyNgl呢,果不其然出错了,这到底是什么原因?我接着输入anaconda search -t conda pyngl,查看pyngl各个版本信息,发现4个pyngl和pynio安装包根本就没有windows系统的版本,而windows里面安装的环境都是windows下的。因此这就是导致windows系统不能安装Pyngl和Pynio的原因。

因此小结一下:安装Pyngl和Pynio需要在linux环境

但尽管如此,如果你的电脑是Win10版本,那么你仍然可以安装这两个包。方法是

  1. 先安装linux子系统;
  2. 安装miniconda或者Aanconda环境;
  3. 使用conda安装NCL包和PyNgl和PyNio。

如何在windows中的linux子系统上安装呢?

  1. 安装linux子系统
  • 开启开发者模式。系统设置 -> 更新和安全 -> 针对开发人员 -> 选择开发者模式

点击后会自动安装环境。

  • 勾选适用于windows的linux的子系统,点击确定,之后重启电脑。
  • 安装Linux子系统,有两种方法安装。第一种是Microsoft store里面直接搜索Ubuntu进行安装。

第二种方法是在win10 命令行内进行安装。Win+R打开cmd,输入bash回车,然后选择y即可安装。

注意:

(1)刚刚安装好Windows 10版本,Linux子系统可能没有处于启用状态。或者安装好linux子系统之后,打开之后输入任意键就闪退了。这时管理员权限的命令提示符(或PowerShell)下输入下面代码,确保子系统可用,然后重启。
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
(2)如果输入bash安装失败,可用lxrun /install /y,即以root登录。

  • 初次进入Linux子系统需要设置Linux的用户名及密码。记住输入密码时屏幕上没有显示,这时正常的现象。切换搭配root状态是输入 sudo -s,然后输入密码。
  • 更改apt源(选做)。因为Linux子系统的apt源使用的是官方源,需要连接到国外的服务器。所以安装一些软件时下载会很慢,我们可以改用国内的镜像apt源,不改也没有什么问题,不是很影响使用。国内的有阿里源、清华大学源、科大源和网易源,这里推荐科大源。

对原始文件备份:sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

编辑源配置文件/etc/apt/sources.list,可以用vi编辑,讲文本内容替换为:

deb https://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse

保存运行:sudo apt-get update

2. 安装miniconda或者Aanconda环境

  • 下载安装linux版本的miniconda或者anaconda,建议选择更小的miniconda。链接:https://conda.io/en/latest/miniconda.html
  • 输入以下命令安装:①bash Miniconda…sh;②source ~/.bashrc 更新bash文件
  • 测试安装是否成功,输入conda -V,如果出现相应的版本号即表明安装成功了。

注:默认安装的linux子系统的目录在C:UsersyxkAppDataLocalPackagesCanonicalGroupLimited.Ubuntu16.04onWindows_79rhkp1fndgscLocalStaterootfshome

3. 安装NCL及PyNgl、PyNio

  • 安装NCL,输入:conda create -n ncl_stable -c conda-forge ncl,此时可以看见miniconda3envs中出现了一个名为ncl_stable的文件夹,即是ncl的安装包。安装地的。需要调用时,先输入source activate ncl_stable,再输入ncl xxx.ncl即可以执行相应脚本。
  • 安装PyNgl、PyNio,参考官网的教程(http://www.pyngl.ucar.edu/Download/ )。

输入:conda create --name pyn_env --channel conda-forge pynio pyngl

或者conda create -n ncl_to_python -c conda-forge xarray netcdf4 scipy pyngl pynio ncl即可。

可发现miniconda3envs下多了pyn_env或者ncl_to_python文件。

调用:需要调用PyNgl、PyNio包的时候,输入source activate pyn_env或source activate ncl_to_python,然后输入python xxx.py脚本即可以运行。

注:有时候发现安装pyn_env和ncl_to_python之后,输入import Nio时报错,如下图:

此时的解决方法是:conda create --name pyn_env --channel conda-forge/label/cf201901 pynio pyngl 来下载pyn_env。至于ncl_to_python目前还没有很好的解决方法。但是ncl_stable+pyn_env的功能=ncl_to_python

  • 关于linux子系统运行的疑问:

问题一:找到根目录之后,新建或者复制了文件数据之后,打开ubuntu,为什么输入ls看不到相应的文件?

解答:这个问题确实存在,这是linux 子系统的一个bug。你关闭ubunt终端之后重启,在此打开进入该目录下输入ls,即可以看到新建或者复制的文件了。

总结:有任何文件的更改,特别是通过windows环境下的复制粘贴以及新建的方式,一定得重启ubuntu终端才能生效。

问题二:如何进入C盘或者D盘,输入cd D:会报错,使用cd ../../../一直后退也不行,只能到根目录下面就停止了,那是不是只能在根目录下运行相关程序呢?

解答:要进入其他盘,得输入cd /mnt/。即可以看到各种磁盘了,此时就可以进入C盘/D盘操作了。

问题三:有时候执行cd命令,进入进出文件夹时,都会出现Permission denied问题,这到底是怎么回事?

解答:这是因为权限不够的问题,建议输入sudo -s,进入root命令之后,再去执行相应的命令。但是在root命令下得格外小心哦。


实例运行:

问题:用pynio pyngl读取nc数据,并输出相应的图像

前期处理:①下载数据,仅有7kb

http://www.ncl.ucar.edu/Document/Manuals/NCL_User_Guide/Data/tas_mod1_hist_rectilin_grid_2D.nc​www.ncl.ucar.edu

②查看nc数据的属性,了解里面的数组信息,在Python的环境下,可以通过

gdalinfo name.nc 查看

或者

import netCDF4 (得安装netCDF4,可使用pip install netCDF4)

dataset = netCDF4.Dataset('tas_mod1_hist_rectilin_grid_2D.nc')

print(dataset)

如何运行:打开ubuntu——输入source activate pyn_env,进入相应的test目录(包括下载的tas_mod1_hist_rectilin_grid_2D.nc数据和一个test.py脚本,该脚本代码如下)。在该目录下输入python test.py即可运行。

import pandas as pd
import numpy as np
import Ngl,Nio,os
############################################################################
#############                      read  data                ##############
############################################################################
file_obs    = Nio.open_file("tas_mod1_hist_rectilin_grid_2D.nc")
print (file_obs.variables.keys())      ## 查看存在哪些变量
lon_obs= file_obs.variables["lon"][:]
lat_obs= file_obs.variables["lat"][:]
time_obs= file_obs.variables["time"][:]
tas_obs= file_obs.variables["tas"][:]   ##tas_obs是一个四维的数组
print(time_obs)                         ## 检查是否有错
print(tas_obs)
############################################################################
#############                      plot setting                #############
##################################################################################
wks = Ngl.open_wks("png","111")            # 打开一个工作站,与ncl里面的设置一致
resources = Ngl.Resources()
resources.tiMainString = "X-Y plot"        # 设置图片标题
resources.tiMainFont = "Times-Roman"       # 图片标题字体
resources.tiMainFontHeightF = 0.027        # 图片标题字号
resources.tiXAxisString = "X"              # 设置 X 轴标题
resources.tiXAxisFont = "Helvetica"        # X 轴标题字体
resources.tiXAxisFontHeightF = 0.02        # X 轴标题字号
resources.tiYAxisString = "Y"              # 设置 Y 轴标题
resources.tiYAxisFont = "Helvetica"        # Y 轴标题字体
resources.tiYAxisFontHeightF = 0.02        # Y 轴标题字号
resources.xyLineColors = 24                # 设置线条颜色
resources.xyLineThicknesses = 2            # 设置线条粗细
resources.xyMarkLineModes = "MarkLines"    # 线条模式
resources.xyMarkers = 0                    # 无Marker
resources.xyMarkerColor = 189              # 标记颜色
resources.xyMarkerSizeF = 0.03             # 标记大小 (默认值为 0.01)
plot = Ngl.xy(wks,time_obs,tas_obs[:,0,0,0],resources) # 画图
Ngl.end()  

结果:

关注“happy科研”公众号和CSDN博客(ID:weixin_44267600),获取更多有趣有料的干货。
有任何问题,请发邮件至:yfangnuist@gmail.com

windows脚本命令闪退_NCL2Python|windows系统安装Pyngl和Pynio相关推荐

  1. windows脚本命令闪退_批处理闪退、运行中断等问题的处理

    本文最后更新于:2019.4.3 因为我只会一些批处理代码,所以我的"局域网共享一键修复"等软件就都做成了批处理程序(后缀名为.bat)供大家使用.有些网友反馈:右键运行批处理,会 ...

  2. python学习笔记29(利用pycharm在windows下出现闪退以及turtle 入门)

    1.利用pycharm在windows下出现闪退 昨天下午去图书馆抱回来三大本学习python的书籍,准备进修一下python程序设计,正好课本里面有关于图形化程序设计的章节,但是这个我之前没接触过, ...

  3. PADS 在 Windows 11 下闪退解决方法

    PADS 在 Windows 11 下闪退解决方法   Windows 11是由微软公司(Microsoft)开发的操作系统,应用于计算机和平板电脑等设备, 于2021年6月24日发布,2021年10 ...

  4. windows脚本编制引擎_说说 Windows 脚本宿主运行的几种方式

    1.在命令提示符下运行脚本 使用 Windows 脚本宿主,可以在命令提示符下运行脚本.CScript.exe 提供了用于设置脚本属性的命令行开关. 使用 CScript.exe 运行脚本 用下列语法 ...

  5. 电脑(伪)大神装B必备,来学几个windows脚本命令

    作为一个经常使用电脑的人来说,掌握一些脚本命令以备在别人面前装B是很有必要的.看完这篇文章,你就学会了基础常用的装B命令,让装B轻松自如. 其实脚本命令没什么新鲜的,属于低级的操作,所谓的电脑大神也是 ...

  6. windows启动tomcat闪退

    现象:windows下双击tomcat\bin\startup.bat时闪退 原因:缺少环境变量导致 解决方法:打开编辑tomcat\bin\startup.bat,头部加入以下代码,一个是JAVA目 ...

  7. 人大金仓windows 10 安装闪退,改绿色安装方法,

    最近使用人大金仓v8windows版安装发现安装在选择授权时直接闪退使其无法完整安装只能装客户端,经过研究终找到中级解决方法 ,故记录一下 首先从一个已经安装成功的并能正常使用的电脑上将整个文件夹复制 ...

  8. 计算机命令秒退,Win10专业版下ping命令闪退自动关闭的解决办法

    Ping是Windows.Unix和Linux系统下的一个命令.ping也属于一个通信协议,是TCP/IP协议的一部分.利用"ping"命令可以检查网络是否连通,可以很好地帮助我们 ...

  9. arcgis运行python脚本时闪退_关于ArcMap中打开ArcToolbox导致闪退的解决办法

    最近好久不用ArcGis的小编要用到ArcMap去发送一个GP服务,发现按照套路打开ArcMap点击ArcToolbox时,发生了ArcMap的闪退现象,几经周折终于解决了问题. 希望也遇到这类问题的 ...

最新文章

  1. c++ 弹出菜单在固定的位置_固定资产管理软件操作手册(资产维修)
  2. 【SpringMVC】从Fastjson迁移到Jackson,以及对技术选型的反思
  3. App设计灵感之十二组精美的酒店预定App设计案例
  4. 计算机组成原理课程论文结语,计算机组成原理课程论文
  5. Python3利用BeautifulSoup4抓取站点小说全文的代码
  6. 3.7 钱包、帐户、token、智能合约、action、权限、权重和阀值之间关系
  7. 大华中心管理服务器,大华监控中心联网解决方案
  8. C语言逻辑运算符,位运算符总结
  9. java大赛参赛学院名单,河南大学第十一届“学佳澳杯”大学生程序设计竞赛获奖名单公布...
  10. 【BZOJ5470】[FJOI2018]所罗门王的宝藏()
  11. 中国版的日和-十万个冷笑话
  12. Eclipse(JavaEE)下载地址
  13. Android发展趋势分析
  14. c语言彩票随机数7位数,随机生成7个不重复的彩票号码 (33选7)
  15. 苹果高级副总裁:移除部分屏幕时间控制应用是因为安全和隐私
  16. ESP32C3基于Arduino框架下的 ESP32 RainMaker开发示例教程
  17. Linux系统下GiB和GB的换算详细解析
  18. python与机器人王国_【工业机器人】盘点日本最值得关注的工业机器人13大巨头!...
  19. 带版本号的符号 versioned symbol
  20. 投资体系-02-房产投资三级火箭模式与产业思维

热门文章

  1. 深度学习中 epoch,[batch size], iterations概念解释
  2. 多个域名向主域名自动跳转的Nginx配置
  3. FC网络学习笔记02 -网络配置方法
  4. Linux驱动程序的数据封装
  5. 实时内核(Core)和实时操作系统(RTOS)有何不同?
  6. 在ODM公司要不要跳槽到创业公司
  7. java怎么编程方程_[编程入门]自定义函数求一元二次方程-题解(Java代码)
  8. php无法创建cookie,php-curl cookie无法成功创建
  9. LeetCode MySQL 1853. 转换日期格式(日期格式化)
  10. LeetCode 410. 分割数组的最大值(极小极大化 二分查找 / DP)