Introduction
前面我们从NumPy入手,开启了我们的Python历程。尽管科学计算也许是我们使用Python的首要目的,仍需要以Python的基本体系作为支撑。
因此,我们将开启一个新栏目,简洁地介绍Python的基本语法与使用等。从基本数据类型,到控制流语法结构;从独特的推导式,到普适的函数与类。
我们将深入学习Python的原初设计理念。
这次的文章就从用几行命令快速构建一个满足日常基本开发要求的地球科学专用Python环境开始吧!
关于Conda
概念与定义
Conda 是一种跨平台的包管理和环境管理系统,可以方便地安装和管理 Python 的库和其他依赖项。通过创建隔离的虚拟环境,以便在不同的项目之间使用不同版本的 Python 和库,而不相互冲突。
相较于从Python官网直接下载后创建Python环境,并使用pip
进行管理。Conda管理Python项目的优势在于:
-
环境隔离: 可以针对不同项目要求创建不同的虚拟环境,使用特定的 Python 版本和库,从而避免冲突和版本问题。
-
迁移便捷: Conda 可以创建环境的配置文件,以便轻松地在不同计算机上重建相同的环境。同时,还可以利用
conda-pack
等方式便利地将本地环境打包迁移至离线工作站和超算集群等。 -
简单易用: Conda 使用简洁的命令行语句便可轻松安装、更新与卸载第三方库和管理虚拟环境。
下载与安装
由于Anaconda过于臃肿,其附带的UI也有些鸡肋,我们常用它的轻量级发行版MiniConda。而Anaconda官网下载存在网络不稳定的问题,所以对于国内玩家推荐从清华镜像获取。
❝MiniConda清华镜像
https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda
下载完后,一路next完成安装即可。
特别注意,MiniConda2对应Python 2.x
版本,MiniConda3则对应Python 3.x
版本。
Conda基本操作
创建虚拟环境
安装好MiniConda之后,我们可以在「开始」菜单中打开Anaconda Prompt (miniconda3)
。
此时,Conda环境为默认的base环境,我们可以在命令提示符C:\User\xxx>
前的(base)
可以看出。
一般情况下我们不修改默认环境base,而是创建新的虚拟环境。当我们虚拟环境出现问题,删除虚拟环境重新在base的基础上创建即可。从而避免base环境损坏而需要重装MiniConda软件。
下面我们解析创建虚拟环境的命令:
conda create -n test-env
-
conda
:调用Conda包管理器命令。 -
create
:创建新的Conda虚拟环境。 -
-n
:于指定新环境名称。
以上是以默认方式创建名称为test-env
的Conda虚拟环境。如果我们需要设定一些更丰富的选项,可以在以上命令之后追加参数:
conda create -n py310-test -c conda-forge python=3.10
这里我们追加了更多自定义参数,包括:
-
-c conda-forge
: 指定安装包的来源渠道(channel)。conda-forge
包含了大量的第三方库及丰富的版本,同时相较于直接从Conda社区获取第三方库,其下载速度具有明显优势。 -
python=3.10
:指定安装的 Python 版本,此处为 Python 3.10。
❝关于Python版本的选取
与我们使用APP或MATLAB之类的闭源语言不同,由于适配性等问题,通常不推荐安装最新的Python发行版。
依赖于开源社区的第三方库,新版本Python可能存在版本冲突、依赖项版本过低和Python底层改动导致的bug等问题。
所以,更推荐使用相对早数个版本的Python,以获得更好的适配体验。如上例中,我们安装的依然是Python 3.10,尽管目前Python 3.12已经发布相当长一段时间。
如果虚拟环境损坏,或者不再需要该环境,我们就可以将其移除:
conda env remove -n py310-test
激活虚拟环境
安装好虚拟环境后,我们可以激活它,从而开始自定义。
我们首先可以查看本机当前存在的虚拟环境:
conda env list
可以看见py310-test
已经存在本机上。于是,我们可以切换到该环境:
conda activate py310-test
切换成功后,命令提示符前的(base)
变成了(py310-test)
。
若需要退出当前环境返回base环境,则可以使用deactivate
:
conda deactivate
安装第三方库
我们重新切换回刚刚创建的py310-test
环境,下面演示如何安装第三方库。
我们首先查看当前存在的Python库:
conda list
Conda同样默认支持Python原生的pip
命令:
pip list
我们尝试安装地球科学领域常用的栅格处理第三方库Rasterio
:
conda install -c conda-forge rasterio
如上图所示,Rasterio
需要相当多的依赖项才能工作。Conda的优势便在于,对于第三方库依赖环境的支持较pip
更好。
使用conda list
可以看见Rasterio
已经安装成功:
对于一些未被Conda收录的小众库,或者需要使用源码安装,我们依然需要使用pip
安装:
pip install solarpy
快速配置满足地球科学基本要求的环境
Mamba
在介绍如何快速配置一个满足我们地球科学领域基本程序设计要求的Conda虚拟环境之前,我们首先需要聊聊Mamba。
Mamba 是一款用于 Python 和 R 环境的高性能包管理器,采用 C++ 构建。它是一款跨平台工具,旨在提供比传统 Conda 包管理器更快、更高效的包安装和管理。
其主要特点包括:并行加速下载、兼容性支持(Mamba会检测当前虚拟环境的第三方库与新安装库之间是否存在冲突,并自动升降版本以适配相应版本)、跨平台支持(支持Windows、Linux、MacOS等多平台操作系统)等。
配置之前我们首先安装它,并使用它来进行包管理。
conda install -c conda-forge mamba
我们尝试使用它安装一个第三方库,其基本用法与Conda一致:
mamba install -c conda-forge proplot
可以看见,由于版本冲突,Mamba将自动进行升降级。
应用案例
万事俱备,那么接下来我们就用简短的几行命令配置一个满足我们日常使用要求的虚拟环境吧!
conda create -n py310-test -c conda-forge python=3.10
conda activate py310-test
conda install -c conda-forge mamba
mamba install -c conda-forge proplot
mamba install -c conda-forge pygis geemap
mamba install -c conda-forge cartopy
mamba install -c conda-forge salem
前三句的含义我们前面已经解析过了,这里不再赘述,后四行命令则是安装了5个第三方库。其中:
-
Proplot
为目前非常强力的一个可视化第三方库; -
PyGIS
和Geemap
中则整合了当前最常用的地学第三方库(如,GDAL
、Rasterio
、Xarray
、GeoPandas
,并包括了Google Earth Engine
的Python API
和JuPyter Notebook
),一次性解决了重复使用命令安装不同地学库和版本冲突的问题; -
Cartopy
则主要面向地学可视化,调整我们绘图中的坐标系、投影等问题; -
Salem
则是当前一款非常实用的NetCDF掩膜工具。
接下来只需要将该环境配置到你的开发环境中,就可以开始愉快的编程之旅了。其他需要进一步扩展的第三方库可自行安装。
Let's start coding!
Manuscript: RitasCake
Proof: Philero; RitasCake
获取更多资讯,欢迎订阅微信公众号:Westerlies