windows脚本命令闪退_NCL2Python|windows系统安装Pyngl和Pynio
自從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版本,那么你仍然可以安裝這兩個包。方法是
如何在windows中的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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Excel里,vlookup函数各种应用
- 下一篇: lcd液晶字体_等离子电视与液晶电视的区