1.5 编辑体验
在气象应用领域选用Python的最大优势之一就是Python拥有大量相当好用的代码编辑环境,并且针对科研和工程都有不同的优良选择。这里介绍几款应用广泛且开源或免费的开发工具。
1.5.1 交互式笔记本——Jupyter
Jupyter是使用Python开发的基于Web(例如Chrome浏览器)的交互式编辑环境,旨在让科学家更轻松地使用Python和数据进行科研,支持Windows、macOS和Linux。Jupyter将是本书后文案例使用的Python编辑环境。
我们可以通过Jupyter编写交互式Python代码进行研究,甚至可以结合Markdown文本和公式进行文档的编写。用Jupyter编写的代码及运行结果保存在名为Notebook的文档中,其文件扩展名为.ipynb。
Jupyter使用了Web技术,这意味着Jupyter被分离为服务器端与浏览器端,服务器端承担运算任务,使用者的所有交互只在浏览器上完成,服务器与浏览器通过网络连接进行通信(如果服务器端运行于本地,则相当于使用者自己的计算机既是服务器又是浏览器)。同时这也意味着,Jupyter可以用于远程部署。例如在远程的高性能计算机上安装Jupyter,使用者在自己的计算机上打开浏览器连接服务器即可使用,并且由于服务器端存在于远程高性能计算机上,所以所有运算任务由服务器端承担,使用者并不需要担心自己的计算机性能不足。
在Jupyter中运行着3种进程:Kernel(核心)进程、Web进程和管理进程,如图1-39所示。
图1-39 Jupyter的运行结构
Kernel进程负责执行计算任务,Kernel进程通常是独立Python解释器进程,在Notebook文档中运行的Python代码都由Kernel进程实现。由于Kernel进程是独立运行的,因此运行代码导致的进程崩溃并不会使整个Jupyter崩溃,只需要在交互界面选择重启Kernel进程即可(由于之前运行的状态会丢失,因此需要重新运行代码块)。在Jupyter中每打开一个Notebook文档,系统都会为这个文档启动一个独立的Kernel进程,可运行的Kernel进程的数量仅受计算资源限制。
Web进程负责与浏览器和Kernel进程通信,Web进程将浏览器发送过来的指令转换为标准的Python代码块交付给Kernel进程运行,同时将Kernel进程返回的计算结果解析成浏览器能读取的数据并发回给浏览器。
管理进程负责监控Kernel进程和Web进程的状态,并根据需求控制Kernel进程的状态。例如,在浏览器上打开一个新的Notebook文档,管理进程会根据需要启动一个新的Kernel进程;或当你在交互界面选择重启Kernel进程时,管理进程会尝试结束前一个Kernel进程,启动一个新的Kernel进程。
1.Jupyter Notebook
Jupyter Notebook可以以网页的方式打开Notebook文件(它可以保存代码、运行的结果和自定义的文本和图片)。在该页面中用户可以直接编写代码和运行代码,运行结果也会在页面下方展示出来。
Jupyter Notebook的首页如图1-40所示。
创建新的Notebook文件并运行简单代码,然后输出,如图1-41所示。
Jupyter Notebook是最早用于创建Notebook文件的交互式计算环境。
图1-40 Jupyter Notebook的首页
图1-41 创建新的Notebook文件并运行简单代码,然后输出
(1)安装。
在conda中安装Jupyter Notebook最少只需要一行命令,操作非常简单。
通过conda activate + 环境名进入需要安装Jupyter的虚拟环境,在这个环境中执行以下命令:
"conda install -c conda-forge Jupyter"
等待conda收集安装信息,在询问是否继续时直接按Enter键,即可开始安装,具体消耗时间根据网络状况而定,如图1-42所示。
图1-42 激活环境并安装Jupyter Notebook
(2)插件。
Jupyter Notebook支持配置自定义插件,可打造个性化的使用体验,但是即使跳过此步骤也不会影响正常使用。
只需在已经安装有Jupyter Notebook的虚拟环境中分别执行下面两行命令:
"conda install -c conda-forge Jupyter_contrib_nbextensions"
"conda install -c conda-forge Jupyter_nbextensions_configurator"
插件依赖安装好之后,Jupyter Notebook首页选项卡部分多出了一个名为Nbextensions的选项卡,如图1-43所示。
图1-43 Nbextensions选项卡
单击Nbextensions,取消勾选禁止配置插件的复选框,如图1-44所示。
图1-44 启用插件配置
勾选插件前方的复选框,使该项插件前方的复选框为选中状态,即可启用该项插件。单击插件名,然后将浏览器的滚动条拖到下方,则可以看见插件的介绍。
(3)运行。
在已经安装Jupyter的虚拟环境中,输入jupyter notebook并按Enter键,执行命令。
这时系统应该会自动打开浏览器并打开Jupyter Notebook的页面。如果没有,则在终端显示的内容中找到地址,并将其复制到浏览器的地址栏中打开即可,如图1-45所示。
图1-45 用于手动打开Jupyter Notebook的链接
需要注意的是,这里是在本机运行Jupyter服务器端,终端中输出的浏览器地址只能在本机打开,如果想要远程访问Jupyter Notebook,还需修改监听IP和端口的相关配置。
(4)使用。
在Jupyter Notebook的首页可以选择工作目录。进入工作目录,单击页面右方的New按钮,选择Python 3,会自动打开一个Notebook文档的编辑页面。文档的默认名称为Untitled,在文档的编辑页面内单击文件名可以修改文件名,如图1-46所示。
图1-46 修改Notebook文件的名称
页面下方是代码块或文本块单元(Cell),代码即以单元为单位运行。
单元被选中时是蓝色的,编辑状态下是绿色的。选中单元时可以在工具栏看到单元类型。单击单元类型下拉框可以对其进行修改,如图1-47和图1-48所示。
图1-47 修改单元类型
我们在使用时,一般只使用代码类型和Markdown类型。
在单元里写下第一行代码,如图1-49所示。
图1-48 4种单元类型对应的选项
这时代码并没有被运行,需要按Shift+Enter组合键运行代码(按Ctrl+Enter组合键也可以运行代码,但是不会在运行代码后在下方建立新的空白代码单元)。这时正在被编辑的单元被执行,该单元下方会显示执行结果,同时会建立一个新的空白代码单元,并将编辑状态切换到新的空白代码单元,如图1-50所示。
图1-49 第一行代码
图1-50 输出结果在单元下方显示
当单元类型为Markdown(见图1-51)时,按Shift+Enter组合键则可将原始Markdown文本编译成对应格式的文本,如图1-52所示。
图1-51 Markdown类型的单元
图1-52 实现按Shift + Enter组合键后的Markdown类型的单元
2.JupyterLab
JupyterLab是Project Jupyter的下一代用户界面,包含Notebook的所有功能。它具有模块化结构,可以在其中同时打开多个Notebook文档或文件(文本、图片、Markdown等)。Jupyter Notebook对初学者更为友好,更易于使用,但是当用户熟悉Jupyter Notebook并需要使用更多功能时,JupyterLab便是更好的选择。JupyterLab与Jupyter Notebook可以“完美共存”,所以你也可以选择同时安装它们,随心切换使用。
JupyterLab的主页如图1-53所示。
图1-53 JupyterLab主页
(1)安装。
通过conda activate + 环境名进入安装JupyterLab需要的虚拟环境,在这个环境下执行以下命令:
"conda install -c conda-forge Jupyterlab"
(2)插件。
插件可以自定义安装,但是跳过插件的安装也不会影响正常使用。
对于JupyterLab,要安装插件则需要在系统中安装Node.js开发工具。
Windows用户可在搜索引擎中搜索Node.js,找到Node.js的官网,在其首页下载适用于自己系统的LTS版本的Node.js开发工具,如图1-54所示。
图1-54 下载Node.js
下载完成之后开始安装。
Ubuntu用户可在命令行中执行以下命令(此处使用了root权限,如果当前用户不在sudoer列表中,则无法执行):
"curl -sL ****://deb.nodesource.***/setup_14.x | sudo -E bash -"
"sudo apt install -y nodejs"
安装完成之后,在JupyterLab页面的最左侧找到形状为拼图块 的图标,并单击该图标,如图1-55所示。
单击Enable启用插件功能,如图1-56所示。
图1-55 单击相应的图标
图1-56 启用扩展插件
图1-56中所示的INSTALLED表示已安装插件,DISCOVER表示插件市场。可以展开DISCOVER选项寻找自己感兴趣的插件,单击插件名下方的Install即可进行安装,如图1-57所示。
图1-57 单击Install进行插件安装
(3)运行。
在已经安装JupyterLab的虚拟环境中输入jupyter lab并按Enter键,执行命令。
这时应该会自动打开浏览器并打开JupyterLab的页面,如果没有,则在终端显示的内容中找到地址,并将其复制到浏览器的地址栏中打开即可,如图1-58所示。
图1-58 用于手动打开JupyterLab的链接
需要注意的是,这里是在本机运行Jupyter服务器端,终端中输出的浏览器地址只能在本机打开。与Jupyter Notebook相似,如果想要远程访问Jupyter Lab,还需修改监听IP和端口的相关配置。
(4)使用。
在JupyterLab页面左侧可以选择当前工作目录,如图1-59所示。
进入工作目录后,在右侧选择Notebook→Python 3,新建Notebook文档,如图1-60所示。
图1-59 选择当前工作目录
图1-60 新建Notebook文档
与Jupyter Notebook不同的是,JupyterLab不会打开新的页面,而是在当前页面内新建的选项卡中打开Notebook文档,如图1-61所示。
图1-61 JupyterLab在当前页面内打开Notebook文档
1.5.2 工程型开发环境工具
开发Jupyter的目的是将其用于数据科学研究,所以一般在代码数量可能会更多的工程型开发中使用Jupyter会显得力不从心,这时使用为工程型开发而生的编辑器是更佳的选择。本书后续案例将以Jupyter作为主要编辑器,所以此处对工程型开发环境工具仅做简单介绍,详细使用方式可以在网络上找到对应教程。
Visual Studio Code是美国Microsoft公司主导开发的开源编辑器;PyCharm是由捷克JetBrains公司开发的Python集成开发环境,社区版可免费开源使用。
1.Visual Studio Code
Visual Studio Code简称VS Code。VS Code是一个免费开源的现代化轻量级代码编辑器,它并不原生提供对Python代码的支持,但是在安装Python支持插件之后仍然能给用户提供相当优秀的开发体验,支持Windows、macOS和Linux。
(1)安装。
在搜索引擎中搜索vscode,如图1-62所示,并进入VS Code的官网。
图1-62 搜索vscode
进入VS Code的官网之后,可以很直观地看到下载按钮,如图1-63所示。
下载安装包,直接安装即可。安装完成后启动VS Code,在界面左侧找到形状是4个方块的插件市场按钮并单击它,如图1-64所示。
图1-63 VS Code下载页面
图1-64 单击相应的按钮
在搜索文本框中输入Python,找到第一个插件,如图1-65所示,并单击其对应的Install。这是VS Code对Python支持的基础插件。
接下来在搜索文本框中输入pylance,找到第一个插件,如图1-66所示,并单击其对应的Install。这是VS Code对Python支持的辅助插件,其提供了基于机器学习的智能代码提示功能。
图1-65 搜索Python支持插件
图1-66 搜索名为pylance的Python扩展支持插件
至此,VS Code与其Python支持插件安装完成。
(2)使用。
使用VS Code首次打开以.py为扩展名的Python脚本时,系统会询问是否将Pylance设置为默认语言服务,这时单击“Yes, and reload”将Pylance设置为默认语言服务并重新加载VS Code,如图1-67所示。
单击界面左下角的Select Python Interpreter可以选择需要使用的Python解释器,如图1-68和图1-69所示。
选择对应的Python解释器之后,界面左下角会显示对应的环境名称和Python版本信息,如图1-70所示。
图1-67 将Pylance设置为Python的默认语言服务
图1-68 单击Python解释器选择按钮
图1-69 选择需要使用的Python解释器(这里显示的解释器都由conda虚拟环境创建)
VS Code中有自动补全提示和参数提示,如图1-71所示。
图1-70 显示当前Python解释器的环境名称和Python版本信息
图1-71 VS Code的函数参数提示
2.PyCharm
PyCharm是专为Python设计的集成开发环境,自带完善的调试、项目管理和智能提示等功能,支持Windows、macOS和Linux。其专业版是收费版本,添加了更多有利于大型工程开发的功能,但是针对个人用户,社区版是免费开源的。
安装过程如下。
在搜索引擎中搜索pycharm,如图1-72所示,并进入其官网的下载页面。
在PyCharm的下载页面中,选择适合系统的版本,单击Community下方的Download按钮,即可下载安装包,如图1-73所示。
图1-72 搜索pycharm
图1-73 PyCharm的下载页面
读者服务:
微信扫码关注【异步社区】微信公众号,回复“e59400”获取本书配套资源以及异步社区15天VIP会员卡,近千本电子书免费畅读。