确定将Python作为数据科学的入门工具之后,可以去官网下载Python,但Python令人头疼的环境问题及多种需要安装的工具包通常会成为初学者的阻碍。
不少初学者在Python的安装阶段就被纷至沓来的报错信息搞得头皮发麻,即使最终靠着网络上诸位“大神”的指示,踩着前人走过的脚印稀里糊涂地解决了问题,也难免费上好一番工夫,走许多弯路。这样一来可能会使原本高涨的学习热情因此冷却了大半,许多Python书籍可能就变成“Python从入门到放弃”了。
而Anaconda数据科学套件的出现,可谓是广大初学者的一大“福音”。
所谓“Anaconda套件”,通俗来说是一个打包的集合,里面预装好了Conda、某个版本的Python、众多packages及科学计算工具等,也称为Python的一种发行版,其包含的部分内容如图1-2-1所示。由于内容比较丰富,因此Anaconda对存储空间有一定的要求。存储空间有限的用户,可以选择Miniconda,它只包含最基本的内容——Python与Conda,以及相关的必需依赖项。
图1-2-1 Anaconda套件所包含的部分内容
Anaconda里除Python外,还有一个非常重要的组成部分就是Conda。Conda是一个开源的软件包管理和环境管理系统,能够安装多个版本的软件包及其依赖关系。由于Conda的设计理念在于把几乎所有的工具、第三方包都当作package对待,甚至包括Python和Conda自身,因此Conda打破了包管理和环境管理的约束,能够实现各版本Python和package之间的轻松切换。这种强大的设计理念使Anaconda套件具有以下两大优势。
(1)虚拟环境管理:在进行日常数据分析工作时,对不同的项目可能会需要使用不同版本的Python及不同版本的工具包。Python 2和Python 3在语法上的不兼容使我们必须面对版本上的冲突。而使用Conda建立不同版本的虚拟环境能够帮助我们很好地解决这一问题,对要求不同的项目进行隔离。
(2)包管理:使用Conda可以对多种工具包进行更新、安装和卸载操作,并且Anaconda在安装时已经预先集成了Numpy、Pandas、Scipy和scikit-Iearn等在数据分析过程中常用的包。此外,Conda还可以对非Python的包进行安装管理。例如,在新版的Anaconda中,可以安装R语言的集成开发环境Rstudio。对想要同时使用Python语言和R语言的人来说,可真是美滋滋了。
Anaconda号称是最受欢迎的Python语言和R语言数据分析工具,如图1-2-2所示。它通过对虚拟环境、工具包和Python版本的管理,大大简化了工作流程。同时,Anaconda也是适用于企业级大数据分析的Python工具。它所包含的多个数据科学相关的开源包广泛覆盖了数据可视化、机器学习和深度学习等多个方面,不仅可以用于数据分析,还可以用在大数据和人工智能领域。
图1-2-2 Anaconda官网的sIogan
一言以蔽之,选择Anaconda数据科学套件将会是“入坑”Python的良好开端。
下载Anaconda最简单直接的方式当然是去官网。
官网上提供了Windows、macOS和Linux三种系统下的Anaconda安装包,并且对每种系统都分别提供了与之相对应的Python 3.7和Python 2.7两个版本,如图1-2-3所示。此处推荐安装Python 3.7版本,因为官方已经宣布Python 2.7版本只会维护到2020年。其实安装哪个版本在本质上并没有太大的区别,因为通过环境管理,我们可以很方便地切换运行时的Python版本。
图1-2-3 Anaconda官网下载界面
然而,官网下载通常会遇到的一个问题是,下载速度慢到令人发指。尤其在花费大量的时间好不容易下载安装好之后,又想要安装或更新其中的包时,如果收到由于下载速度过慢而断开链接从而安装失败的报错信息,那么就可能需要花费更多的时间和精力再次下载。
针对此种情况,清华大学开源软件镜像站提供了下载Anaconda的“新姿势”,如图1-2-4所示。我们可以在这里选择适合自己系统的Anaconda版本进行下载安装,与Anaconda官网相比,速度会提升不少。
图1-2-4 清华大学开源软件镜像站Anaconda下载界面
下载好安装包之后,安装的过程按照提示和说明完成即可。值得注意的是,在安装路径的选择中,请确保路径中不包含中文、空格或其他非英文常用字符,否则在后续的使用中可能会被“坑”得晕头转向。
Windows系统下的安装除需要选择安装路径外,还有两个需要额外确认的地方,如图1-2-5所示。
(1)是否要将Anaconda添加到PATH环境变量中?
(2)是否要将下载的Anaconda中对应的Python版本设置为默认版本?
图1-2-5 Windows系统下Anaconda安装过程中需要确认的两个地方
对于第一个问题,建议不要选中,即不添加。因为选中后可能会对其他软件产生干扰。
对于第二个问题,可以根据自己平时使用Python版本的实际情况进行选择。
安装完成后,打开CMD窗口,输入Conda命令测试安装结果,如图1-2-6所示即为安装成功。
图1-2-6 Windows系统下Anaconda安装结果测试
成功安装Anaconda后会在【开始】菜单中发现Anaconda的文件夹,其中有以下几个应用。
(1)Anaconda CIoud:管理公共或私有Python、Jupyter Notebook、Conda、环境和packages的地方,可以方便分享和追踪。
(2)Anaconda Navigator:用于管理工具包和环境的图形用户界面(GraphicaI User Interface, GUI),后续涉及的众多管理命令也可以在Navigator中手动实现。
(3)Anaconda Prompt:也被称为终端,用于管理工具包和环境的命令行界面,可以便捷地操作Conda环境。
(4)Jupyter Notebook:基于Web的交互式计算环境,可以编辑易于人们阅读的文档,用于展示数据分析的过程。
(5)IPython:Python的交互式sheII,比默认的Python sheII好用得多,支持变量自动补全,自动缩进,支持bash sheII命令,内置了许多很有用的功能和函数。
(6)Jupyter QtconsoIe:调用交互式命令台,在很大程度上像是一个终端,但提供了许多只能在GUI(后面会具体重点介绍)中使用的增强功能,如内联图形、带语法高亮的正确多行编辑和图形化提示等。可以看作IPython的加强版。
(7)Spyder:一个使用Python语言、开放源代码的科学运算集成开发环境。Spyder可以跨平台,也可以使用附加组件进行扩充,自带交互式工具,方便处理数据。
对macOS系统的用户来说,安装成功后在【Launchpad】中会出现Anaconda Navigator的图标,而macOS系统自带的终端即可用作Anaconda Prompt,打开终端,同样输入Conda命令测试安装结果。
而上述提到的多个在Windows【开始】菜单中出现的应用,用户可以选择打开Anaconda Navigator,如图1-2-7所示,在其中单击进入,或者在终端中输入相应的应用名称即可打开应用。
图1-2-7 Anaconda Navigator主页界面
Navigator和Prompt都是用来管理环境和工具包的应用。区别在于:Navigator是可视化的GUI,对不太擅长编程的新手来说非常友好;而Prompt则是命令行界面,对有一定编程基础的人来说非常亲切。更简单一点来说,如果偏爱直观类似Web界面的选项选择和鼠标单击,那么推荐使用Navigator;如果偏爱敲代码带来的乐趣,那么推荐使用Prompt。
从图1-2-8中可以看出,Navigator对于环境管理和工具包的管理非常直观简洁,单击相应位置即可完成环境及工具包的搜索、创建、删除和更新等系列操作,因而在此不进行详细说明。
图1-2-8 Anaconda Navigator环境及工具包管理界面
值得一提的是,Navigator除提供环境和包管理功能外,其中的学习和社区版块也提供了很多的学习和互动资源,如图1-2-9所示。有兴趣的读者不妨探索一番,或许能有意外的收获。
接下来的1.2.4小节主要以Prompt为基础,说明Conda命令的使用。
图1-2-9 Anaconda Navigator学习版块界面
通过前面的介绍,相信大家已经对Conda有了一个简单的认识。本小节将对Conda这一命令的使用进行一些基础说明,更加详细的使用方式可以参考Anaconda官网上的Conda官方文档。
1.明确概念
前文反复强调Conda对环境和工具包的管理,那到底什么是环境,什么又是工具包呢?
Conda环境是一个集合,它包含了已安装的特定conda包及其依赖项。例如,如果你同时在进行两个项目,一个项目要求你使用NumPy 1.7,另一个项目要求你使用NumPy 1.6,那么你就可以同时使用两个Conda环境,它们分别包含这两个不同的包及其依赖项。对其中一个环境的更改不会影响其他环境,并且可以通过激活或停用的方式进行环境切换。此外,通过向他人提供environment.yamI文件副本的方式可以实现环境的多人共享。
conda包是一个压缩的打包文件,是一个有层次的文件目录结构,它定义了由n个模块或n个子包组成的Python应用程序执行环境。Conda包含了系统级库、Python或其他模块、可执行程序和其他组件,它可以对包和平台之间的依赖关系进行跟踪。
2.管理Conda
前文提到,Conda的设计理念在于将自身也作为package看待,因此Conda可以对自身进行管理。Conda对自身的管理主要体现在以下几个方面。
(1)检验Conda是否安装成功。在终端中输入以下命令来进行检验。
例1.2.1 检验Conda是否安装成功
如果能够成功显示出目前Conda的版本号,则表示安装成功,如图1-2-10所示。
图1-2-10 检验Conda是否安装成功的运行结果
注意
如果遇到找不到Conda的错误提示,那么很可能是由于环境路径设置出现问题而需要添加Conda环境变量。
例1.2.2 添加Conda环境变量
(2)查看Conda安装版本。除例1.2.1的代码可以用来查看Conda的版本外,以下代码也可以做到。
例1.2.3 查看Conda安装版本
注意
在Conda命令的使用中,可以将许多常用的命令选项从两个短线(——)加命令的格式缩写为一个短线加命令首字母的形式。所以,——version和-v相同,——name和-n相同,——envs和-e相同。
(3)更新Conda。通过以下代码可以进行Conda的更新。
例1.2.4 更新Conda
运行后Conda会比较版本并报告可安装的内容,同时给出其他将随更新自动更新或更改的软件包。如果Conda报告有更新版本可用,那么请输入y进行更新。
3.管理环境
Conda具有强大的环境管理能力,从而使我们可以创建、导出、删除和更新在其中安装了不同版本的Python或软件包的环境,并且允许我们在环境之间自由切换、共享环境文件。Conda对环境的管理主要体现在以下几个方面。
(1)创建环境。在开始使用Conda时,已经拥有一个名为base的默认环境(图1-2-10中有base提示)。但很多时候,我们都不希望将程序放入基础环境中,而是选择创建单独的环境使程序彼此隔离,同时保护基础环境不被破坏。
例1.2.5 创建环境
注意
(1)默认情况下,环境安装在Conda目录下的envs文件目录中。
(2)尽量在环境中同时安装所需的所有程序。一次安装一个程序可能会导致依赖性冲突。
(3)如果想要每次创建新环境时都自动安装某些软件包,那么请将所需的软件包添加到.condarc配置文件的create_default_packages部分。
(4)如果不希望在特定环境中安装默认的软件包,则可以使用——no-default-packages标识。
例1.2.6 在特定环境中取消安装默认软件包
(2)克隆环境。可以通过创建克隆环境来制作环境的精确副本。
例1.2.7 克隆环境
(3)激活/停用环境。通过对环境的激活和停用,可以实现不同环境之间的切换。在激活一个环境之前,最好先停用目前正在运行的环境。
例1.2.8 激活/停用环境
(4)确定当前环境/查看环境列表/查看环境中的包列表。在Windows系统中,默认情况下活动环境(当前使用环境)会显示在命令提示符开头的小括号“()”或中括号“[]”中,如图1-2-10所示。此外,还可以通过以下方式进行查看。
例1.2.9 确定当前环境/查看环境列表/查看环境中的包列表
(5)保存/共享/删除环境。
例1.2.10 保存/共享/删除环境
注意
YAML文件中包含该环境的pip包和conda包,将该文件发送给其他人,他人通过例1.2.5中第9行代码可以创建同样的环境,从而实现环境的共享。
4.管理包
Conda对包的管理主要体现在以下几个方面。
(1)搜索/安装包。与下载Anaconda时可能会遇到的问题一样,由于Anaconda.org的服务器在国外,因此如果直接进行包的下载和安装,那么很可能由于连接失败而收到错误提示。这时,需要再次使用清华TUNA镜像站。
例1.2.11 添加Anaconda的清华TUNA镜像
添加好国内镜像地址后,可以更快地进行软件包的安装。
例1.2.12 搜索/安装包
(2)安装非conda包。如果无法从Anaconda.org或清华TUNA镜像站获得软件包,则可以选择使用其他软件包管理器(如pip)查找并安装软件包。
值得注意的是,pip只是一个软件包管理器,所以无法对环境进行管理。pip甚至无法更新Python,因为它并不认为Python是一个包。pip和conda包之间的差异可能会导致兼容性方面的限制。如果想要获得Conda集成的好处,那么请确保在当前活动的Conda环境中安装pip,然后使用该pip安装软件包。
例1.2.13 安装非conda包
(3)查看已安装的软件包列表。通过以下方式可以查看不同环境下已安装的软件包列表。
例1.2.14 查看已安装的软件包列表
(4)更新包。虽然Anaconda在下载时会安装很多种不同的包,但是各软件包的版本通常是较低的。因此,为了避免在今后的使用过程中出现多种问题,建议在刚安装好时就对所有的包进行更新。
例1.2.15 更新包
注意
Conda对Python的更新会将Python更新到该系列的最高版本。也就是说,如果是Python 2,则更新到2.x系列的最高版本;如果是Python 3,则更新到3.x系列的最高版本。
(5)删除包。可以通过以下操作对不同环境下的工具包进行删除。
例1.2.16 删除包