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

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

d95b81ec4643d435c46e0944fe568d73.png

为什么Windows不能直接安装

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

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

a0acb61c64bcc520ba67e259f4656164.png

82481442ceb3f3038b015d8d548c7a09.png

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

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

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

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

点击后会自动安装环境。

c6bf3f8dce8655f96d3731ccf4ba5a24.png
  • 勾选适用于windows的linux的子系统,点击确定,之后重启电脑。

0130f428a7825670f28150cb2e97bca7.png
  • 安装Linux子系统,有两种方法安装。第一种是Microsoft store里面直接搜索Ubuntu进行安装。

bc04faaef2ec9d9bf63fb7e4751772ce.png

0501898760bceed02c54300c0fd7c954.png

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

5842b6830314afffbcb54bc30fa61284.png

注意:

(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时报错,如下图:

5943fc395bc5b13af065b464b4ca7af8.png

此时的解决方法是: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)

f9985007ad7f2b2e32c38744197811d7.png

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

2e3ea9e6ddc04b1e0f4504e550aa140b.png
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()  

结果:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/476083.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Text_classification】 PaddlePaddle框架下出错调整到运行的实验和记录

使用的是Paddle框架2.0版本 网页: https://github.com/PaddlePaddle/PaddleHub/tree/release/v2.1/demo/text_classification 也可以在其平台上利用公开数据集跑一跑: 网页:https://aistudio.baidu.com/aistudio/projectdetail/2390146?cont…

keil stm32标准库放在哪里_STM32之PWM

脉冲宽度调制脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效且应用十分广泛的技术,例如直流电机的控制、开关电源的输出调制、信号的传递也离不开脉冲宽度调制。我们接下将要讨论的便是单片机中PWM的产生与应用。在STM32单片机中&#xf…

(二十五)【NIPS 2017】Prototypical Networks for Few-shot Learning

完全参考博文 用来记录和学习 Introduction 原型网络的思路非常简单:对于分类问题,原型网络将其看做在语义空间中寻找每一类的原型中心。 原型中心: 针对Few-shot的任务定义,原型网络训练时学习如何拟合中心。学习一个度量函数…

python 时间函数 毫秒_利用python进行播放音频与录音,骚操作!

现如今,我们的学习知识的渠道越来越多,我们也要充分利用自己的感官去汲取知识。当我们看书累的时候,我们完全可以听过听书来学习,这样的平台也很多,pk 哥之前也写过关于下载喜马拉雅音频爬虫的方法:Python爬…

2009岁末之复用系统框架(B/S)

目的 好久没有写博赚点了,最近一直在忙着写基础的框架,为以后的职业发展多点筹码,以前写过C/S,但是现在的应用趋于浏览器,所以匆忙之间利用工作之余写了点东西。本人的水平有限,希望能博得大家一瞥。 技术 …

一建机电实务教材电子版_2020一建教材+章节习题+新旧教材对比【全科】免费送...

2020一建《各科》电子教材2020一建《工程法规》电子教材2020一建《工程经济》电子教材2020一建《公路实务》电子教材2020一建《机电实务》电子教材2020一建《建筑实务》电子教材2020一建《市政实务》电子教材2020一建《水利实务》电子教材2020一建《项目管理》电子教材2020一建…

LeetCode 1189. “气球” 的最大数量

1. 题目 给你一个字符串 text,你需要使用 text 中的字母来拼凑尽可能多的单词 “balloon”(气球)。 字符串 text 中的每个字母最多只能被使用一次。 请你返回最多可以拼凑出多少个单词 “balloon”。 示例 1: 输入&#xff1…

记录F1分数和召回率

内容 参考博文: F1分数以及micro、macro区别 对于上面说的矩阵是不是挺懵的,它的真名叫混下矩阵,看下面 混淆矩阵 所有正确的预测结果都在对角线上,所以从混淆矩阵中可以很方便直观的看出哪里有错误,因为他们呈现在对…

讯达机器人_科大讯飞新品频发完善场景布局“双11”斩获三大平台25项冠军

11月12日,科大讯飞发布”双11”战报,C端产品兑现AI红利实现可持续增长,一举斩获京东、天猫、苏宁易购三大平台25项冠军。11月1日至11月11日,销售额同比增长56% 。目前,科大讯飞消费者业务连续三年保持营收超过30%的增速…

常见报错原因

因为经常犯这个错,但是还不记住! 以此来告诫自己! 1. KeyError 表示当前Key就没有!!! 去检查一下,你出错的字典或者是列表(一般出这个错误肯定有个对照! )…

安装ssd后不识别网卡_100元体验纯正万兆网络:需要安装SSD的NAS服务器

万兆网络似乎离普通玩家一直很遥远,不过借着万能的闲鱼,小编100块搞到一张非常便宜的二手电口万兆网卡,配合安装固态硬盘的NAS网络存储服务器,万兆网络走起来~这张卡用的是BCM57710芯片,网上都说只能在Win 7或者同时期…

【KPGNN】运行错误与成功后的合集

出错合集 1. AssertionError 这句话的意思是: DGLGraph.readonly已经不可用了,而现在高版本的DGLGraph总是支持mutable! 记住是总是,一直!!! 所以现在由于版本问题,使用了高版本&a…

react获取id_解决React应用界面开发常见痛点(一)业务逻辑与UI分离

前言:本系列是针对于React在界面开发痛点的一些解决方案,只是React应用中偏向展示的一环构建一个业务与UI分离的react应用本篇是基于HOC方案并未使用Hooks业务逻辑与UI在编写一个react组件前,我们一定要弄清两件事。什么是UI?什么…

(二十六)【2021 WWW】Knowledge-Preserving Incremental Social Event Detection via Heterogeneous GNNs

题目: Knowledge-Preserving Incremental Social Event Detection via Heterogeneous GNNs 中文题目: 基于异构gnn的知识保持增量社会事件检测 学习目标 学习怎么知识增强的? 学习怎么处理时间等多个因素的? 学习怎么构建子图…

IL应用之——用IL分析接口的本质

IL反编译利器——Ildasm.exe和Reflector.exe:一:Ildasm.exe简介 这一微软VS自带工具,在上一篇博文《初识Ildasm.exe——IL反编译的实用工具》中已经做了详细介绍,这里不再鳌述;二:Reflector.exe简介 至此(1…

自定义_如何自定义协议

前言何为自定义协议,其实是相对标准协议来说的,这里主要针对的是应用层协议;常见的标准的应用层协议如http、ftp、smtp等,如果我们在网络通信的过程中不去使用这些标准协议,那就需要自定义协议,比如我们常用…

校验json格式_格式化展示,校验错误,编辑JSON,这几个JSON工具一定不能错过

今天给大家介绍几个常用JSON的工具,基本上能满足你工作中对JSON的所有需求google插件 JSONView安装好插件后,格式化接口返回的JSON,还能展开节点和关闭节点,超级方便格式化本地JSON,检验错误JSON Viewer网页版将杂乱的…

推荐系统常用评价指标和代码实现

评价指标 Recall 名称: 召回率(真阳性率) 意义:在推荐系统中,我们只关心正确推荐的有多少,也就是用户真实喜欢的,并不会关心推荐错的,所以我们用召回率,而不是准确率&a…

python timeit用法_十大Python开发技巧

Python开发指南, 超级实用足以让您震撼> Photo by Christina Morillo from StockSnap时不时地,当我了解Python的新功能时,或者我发现其他一些人不知道该功能时,我会记下它。在过去的几周中,我最近了解或实现了一些有趣的功能-S…

python编程中的经验(一直更新)

文章目录1. python基础语法1.1 怎么让两个list或者其它可以迭代的放到一起1.2 random.choice(x, n, replaceTrue) numpy中从某个数据集中选择1.3 如何根据key返回字典的value1.4 The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all…