暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

手把手带你科研入门系列 | PyAOS基础教程一:conda管理

气海无涯 2021-11-19
1205


1、前言

前段时间向大家推送了PyAOS社区基本介绍,从本篇文章开始,我们计划用六篇左右的文章向大家详细介绍一下PyAOS基础入门教程,当你把所有教程看完,对python,以及Anaconda 集成开发环境等会有一个全面且基本的了解。如果大家喜欢看英文原版,我们也一并提供:


官方文档:

https://carpentrieslab.github.io/python-aos-lesson/01-conda/index.html


2、概要

文章解答了以下疑问:
第一:大气和海洋科学中主要用到了那些python库;
第二:对于你想使用的python库,如何进行安装和管理;
第三:如何与python环境进行交互。
文章的目标:
第一:带你了解大气和海洋科学用到了哪些python库,以及这些库之间的关系;
第二:向你解释在所有Python发布版本中,Anaconda分支版本的优点;
第三:学习如何使用conda命令conda-forge渠道来安装所需要的包;
第四:为本次学习教程创建一个新的conda环境;
第五:打开Jupyter Notebook,准备写代码。


3、PyAOS栈

在开始研究netCDF降雨数据文件之前,我们首先要考虑的是,实现教程的任务需要哪些python库
        通常情况下,大气和海洋科学用xarray和iris库来完成netCDF文件的读写和分析工作。这些库是建立在更具通用性的库,比如numpy和matplotlib库之上的,这样一来,就会使得我们的分析工作更快,也更高效。如果你想多学习下图PyAOS堆栈的内容,请参考PyAOS社区站点的综述。


4、用于数据科学计算的python版本

既然已经决定用python库了,那么我们应该如何安装这些库呢?
        首先想到的可能是用pip命令安装python库,但实际上
pip只适用于纯python编写的库。这就是它的主要限制,因为很多科学计算的python库需要依赖于C或者Fortran这也是我们不建议用pip安装的原因之一,而且极有可能安装失败。为了解决这个问题,多年来已经发布了很多python版本,这些版本包含了当下最为流行的数据科学库,及其依赖包,有些甚至还有包管理器的功能,可以帮助我们安装其他库,这就是我们今天要介绍的当下最为流行的Anaconda,它包含了conda包管理模块,另外conda还可以进行环境管理。


5、Conda介绍

根据最新的用户文档,Anaconda预装了超过250个当下最流行的数据科学库,以及其依赖库。另外,通过conda install命令还可以安装几千个其他的库。而conda install命令的执行可以在两种操作系统上完成:linux系统下的Bash Shell和windows系统下的Anaconda Prompt。当然还有第三种方法:Anaconda Navigator的图形用户界面来安装所需要的python库。
注意:由于windows系统下没有(linux)bash shell,因此我们可以打开Anaconda Prompt。那么他在哪里呢?如何你打开windows开始菜单,找到安装的Anaconda,那么你就会发现Anaconda Prompt躲在那里。但是首次运行Anaconda Prompt需要执行“conda init bash”命令,然后就可以使用bash shell命令了。比如安装xarray库,就可以用如下命令:
1$ conda install xarray
复制
如何查询指定的包是否可用呢?方法有两种,一种是命令行:conda search  -f  {package_name};另一种就是进到Anaconda Navigation可视化界面中


关于miniconda如果你并不想安装完整的Anaconda,就可以选择miniconda,但是并不建议那么做,因为miniconda除了conda,基本上没啥了。


6、Anaconda Cloud

对于大气和海洋科学这样一个比较小众的研究领域来说,Anaconda提供最重要的功能之一,就是Anaconda cloud网站,这里可以查询conda支持那些库,以及安装命令。这一点非常重要,因为很多库的用户数量很少,也就意味着这些库无法进入到流行库的行列中去。
        你可以直接在搜索框里查找自己所需要的库,比如iris:

但是这里就有一个问题了,iris库来源很多,该怎么办呢?为了解决这个问题,conda-forge应运而生,它的目标是成为一个中央存储库,以保证Anaconda Cloud上只包含每个包的一个工作版本。因此在把conda-forge通道设置为指定通道后,就可以通过conda install命令直接安装指定的库。

1$ conda config --add channels conda-forge
复制

或者Anaconda Navigator图形界面下:

tips:不建议添加任何第三方的渠道,因为多个通道可能会导致不兼容等问题,除非这是你最后的办法了。

7、本课程的包安装

为了完成本课程实践目的,我们需要安装哪些包或者库呢:
Xarray,iris也可以完成它的所有功能;
Dask,用于并行处理;
netCDF4,xarray需要读取netCDF文件;
cartopy,画图用的;
cmocean,调色板,可以调出更漂亮的颜色来;
cmdline_provenance,跟踪数据的处理过程。
这里不需要安装jupyter库,因为它已经在Anaconda中预装好了。然后,我们就可以用conda install 一次性把上面提到的库去安装上了。

1$ conda install xarray dask netCDF4 cartopy cmocean cmdline_provenance
复制


Conda list命令可以帮助我们查看当前环境下安装了哪些库:
1$ conda list

复制


8、创建一个独立的环境

如果你有多个不同的项目需要同时进行,建议为不同的项目创建独立的环境,而不是使用默认的root或者base环境。
比如用bash shell命令创建环境名称为pyaos-lesson的新环境,同时把上面提的包一起安装了。然后用conda activate pyaos-lesson激活新建的环境。与激活相对的是conda deactivate命令。这里千万要注意,一定要安装jupyter包,因为新建的pyaos-lesson中不含jupyter。

1$ conda create -n pyaos-lesson jupyter xarray dask netCDF4 cartopy cmocean cmdline_provenance
2$ conda activate pyaos-lesson

复制

如果你的电脑上有多个conda环境,那么请用下面的命令查看

1$ conda info --envs

复制

输出:

1# conda environments:
2#
3base                  *  /anaconda3
4pyaos-lesson             /anaconda3/envs/pyaos-lesson
5test                     /anaconda3/envs/test

复制

你也可以把某个conda环境的详细信息输出到YAML配置文件中去。那么其他人就可以用你的YAML配置文件再创建一个跟你一模一样的环境。

1$ conda env export -n pyaos-lesson -f pyaos-lesson.yml
2$ cat pyaos-lesson.yml

复制

输出:

1name: pyaos-lesson
2channels:
3  - conda-forge
4  - defaults
5dependencies:
6  - cartopy=0.16.0=py36h81b52dc_1
7  - certifi=2018.4.16=py36_0
8  - cftime=1.0.1=py36h7eb728f_0
9  - ...

复制

重新创建一个一模一样的代码:

1$ conda env create -f pyaos-lesson.yml

复制

为了方便共享YAML文件,你可以把它上传到Anaconda Cloud网站上去。

1$ conda env upload -f pyaos-lesson.yml
复制

然后别人就可以直接用你的用户名来重新创建跟你一模一样的环境了。

1$ conda env create damienirving/pyaos-lesson
2$ conda activate pyaos-lesson

复制

如何删除一个环境呢?

1$ conda env remove -n pyaos-lesson

复制


9、Python交互

在xarray等包安装完成后,我们就需要使用这些包了,这个时候,我们就需要跟python环境进行打交道了。
方法一:在bash shell中直接输入“python”,就可以进入python交互界面,最简单的方法。

1$ python
2Python 3.7.1 (default, Dec 14 201813:28:58
3[Clang 4.0.1 (tags/RELEASE_401/final)] :: Anaconda, Inc. on darwin
4Type "help""copyright""credits" or "license" for more information.
5>>> print("hello world")
6hello world
7>>> exit()
8$

复制

方法二:在bash shell中直接输入“ipython”,也可以进入python交互界面,其实也很简单。
 1$ ipython
2Python 3.7.1 (default, Dec 14 201813:28:58
3Type 'copyright''credits' or 'license' for more information
4IPython 7.2.0 -- An enhanced Interactive Python. Type '?' for help.
5
6In [1]: print("hello world")                                                    
7hello world
8
9In [2]: ls                                                                      
10data/                              script_template.py
11plot_precipitation_climatology.py
12
13In [3]: exit                                                                    
14

复制


请注意看方法一和方法二的区别:方法一进入python交互界面后,它只能输入python命令,而方法二进入python交互命令后,依然可以执行bash shell其他命令。

tips:在Anaconda navigator图形界面的QtConsole接口处,同样可以进入ipython交互界面。

上面两种交互模式适合很少量的代码,如果是大量的代码块,就需要IDE继承开发环境或者Jupyter Notebook。
IDE:目前最常用的IDE(集成开发环境)是Spyder和PyCharm。Spyder在Anaconda Navigator图形界面中,与MATLAB或者R-Studio有点类似。

Jupyter Notebook:它运行在浏览器下的,它允许用户创建和分享包含代码、方程式、可视化和叙事文本的文档。

10、如何打开jupyter notebook呢?

方法也是有两种的:一种是bash shell环境下,输入“jupyter notebook &”命令,其中&表示后台运行;另外一种方法呢,就是windows环境下Anaconda Navigator图形界面中启动jupyter notebook。

关于JupyterLbab:jupyter提供的一种新的集成开发环境,包含了Jupyter Notebook,以及很多其他库。

在启动了jupyter notebook后,我们就可以开始写代码了,首先就是导入几个库,然后执行:

1import xarray as xr
2import cartopy.crs as ccrs
3import matplotlib.pyplot as plt
4import numpy as np

复制


11、总结

第一篇的介绍就到此为止了,从包的安装到导入包,看上去很简单,但是整个流程却很基础,如果这一步有问题,那么后面的工作也无法开展。本篇文章的重点是两个:第一,xarray和iris库是大气和海洋科学核心python库;第二,学会使用conda来安装和管理我们的python环境和库。
        

下一篇将介绍数据处理和可视化,敬请期待。


有问题可以到QQ群里进行讨论,我们在那边等大家。


最后,如果文章对您有帮助的话,欢迎大家花几秒时间点一下赞,在看、收藏和文末的广告、并转发给有需要的同学们,谢谢!


文章转载自气海无涯,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论