anacondapython提供有管理gui、一系列以科学为导向的工作环境和工具,简化了使用python进行数据处理的过程。
毫无疑问,python是现代数据科学的重要组成部分,python方便而强大,它以方便和编程的方式连接了数据科学家和开发人员,他们拥有一整套工具和功能。
尽管如此,这些工具有时还是需要少量或大量的组合。因为python是一种通用编程语言,它的打包和交付能力,并不专门针对数据科学家。但是,许多人以一种预先打包的方式将python交付给了用户,不需要特殊的程序包,一个普通python用户就可以从中受益。
continuum analytics的anaconda发行版是对python的重新包装,目标是使用python进行数据科学的开发人员。它提供了管理gui、一系列以科学为导向的工作环境和工具,以简化使用python进行数据处理的过程。它还可以作为标准python发行版的通用替代品,但前提是要知道它与python的原生版本有何不同。
anaconda包含什么
cpython是python的参考版本,它包括一些使生命周期更容易的东西,标准库、idle迷你版mini-ide和tkinter用户界面库。但是,你可能需要的所有数据科学功能都是一个附加组件,甚至是最基本的工具。相比之下,试图包括一个更好的选择,使数据科学工具开箱即用。
以下是在anaconda中默认包含的内容:
python解释器
anaconda默认包含python解释器的最新版本,这不是来自python软件基础的原生cpython构建,它是由anaconda公司专门为anaconda发行版创建的自定义构建。据anaconda ctopeterwang介绍,解释器在一些平台上有“更安全的编译器标志,更好的性能优化”。
也就是说,anaconda的python解释器应该与cpython兼容。为它编写的c扩展应该是这样的。例如,在microsoftwindows中,解释器是用microsoft visual c/ c++版编译的,与cpython本身的原生版本相同。
anaconda导航器
anaconda增加了与python一起工作的经验,最值得注意的是一个gui,即anaconda导航器。它不是一个ide,也不想成为ide,因为大多数python意识的ide都可以注册并使用anaconda python运行时本身。相反,导航器是一种组织系统,用于在anaconda中更大的部分。
使用导航器,可以添加和启动高级应用程序,如r studio或jupyterlab;管理虚拟环境和包;建立“项目”,以一种新的方法来管理anaconda的版本5;并执行各种管理功能。
虽然导航器提供了gui的便利性,但它并没有取代anaconda中的任何命令行功能,也没有在python中替换。例如,尽管可以通过gui管理包,也可以使用命令行来执行。
相比之下,cpython没有正式的gui。它确实有idle,一个适合快速一次性任务的微型ide。但是任何用于管理python本身的东西都必须来自第三方。为此,一些ide为cpython的组件提供了gui接口。例如,microsoftvisual studio对python的pip包管理系统有一个gui,类似于ui anaconda为它自己的conda包管理器提供的gui。
anaconda的导航器通过用户可配置的ui提供了anaconda python发行版的所有主要元素。
conda
python附带了pip包管理器,用于安装和管理第三方python包。尽管python的开发人员多年来扩展了pip的能力,但它仍然是有限的。它只管理python本身的包,而不是系统的其余部分。
anaconda的开发人员对这个限制进行了努力,但最终还是决定开发他们自己的解决方案:conda,一个包管理解决方案,它不仅处理python包,而且还处理python生态系统之外的依赖关系。
这里有一个conda帮助的例子:如果你有多个依赖于编译器的conda包,比如gcc或llvm, conda可以解决所有这些包的外部依赖关系。它可以为需要它的所有conda包安装特定版本的gcc的单个实例。pip要么假设你已经在系统上安装了gcc,要么将gcc的副本打包到使用它的每个包中,这是一种非常低效且麻烦的解决方案。
因此,conda不能与pip互换,它甚至不使用相同的包格式,为pip创建的包必须为conda重新创建。但是,在python生态系统中使用的几乎每一个重要的包都可以通过conda获得。
python数据科学工具通常有大量的依赖项,很难安装和管理。anaconda的包管理系统conda,在它的gui版本中显示,管理python包和它们在python的生态系统之外的任何依赖项。
anaconda如何使数据工作更容易?
大量的anaconda的改进围绕着python的日常使用,这对大多数python用户都是有益的。但最重要的好处是针对数据科学用户经常发现自己与他们的python环境有冲突。
conda环境
python包,即使是与conda一起管理的,也不能总是相互友好。有时,你需要针对特定项目的不同版本的东西。python的虚拟环境特性,即venv,是为了弥补这个问题而开发的,但是conda将这个想法更进一步。
conda环境在功能上类似于venv类型的虚拟环境。如果想要使用特定版本的包或python解释器的特定版本,可以将它们放到conda环境中,并单独使用它们。
venv环境可以被移动,但是它们不一定有关于它们如何被创建的详细信息。如果你需要为正在做的工作提供一个可复制的环境,那么这可能是一个问题。conda环境试图解决这个问题,因为它们是可复制的。
如果你希望其他人使用末的conda环境,你可以向他们提供环境定义文件的副本,该文件描述了如何在另一个系统上重新创建环境。在跨平台的方式中,这是有限制的,所以在不同的平台上(比如macos和linux)的包工作之间的任何差异都需要手工解决。
三个conda环境,每个环境都有各自的包和python运行时。env-35环境使用python 3.5而不是最近的版本,no-cffi环境省略了cffi包(如右侧的包列表所示)。每个conda环境都需要分别更新它的包集。
anaconda项目
数据科学和软件开发的一个常见问题是,重新生成用于特定工作的确切环境。甚至conda环境也只能为这个问题提供部分解决方案,因为cpythonvenv类型的环境不能够并且不能复制环境变量之类的东西。
进入anaconda项,它让你可以拿一个目录,里面装满了与你正在做的事情有关的东西——“web应用程序、脚本、jupyter笔记本、数据文件,不管它是什么”,就像anaconda所说的那样,把它变成一个可复制的资源。这个目录,一旦它由anaconda项目管理,可以以一致的方式运行,不管它运行在哪里,只要有一个anaconda的副本就可以了。
anaconda项目目前最大的问题是它不是一个生产版本,所以它还不稳定。在此之前,它不应该用于在不能保证每个人都运行相同版本的环境中共享工作。同时,conda环境可以提供相同功能的可靠子集。
应用anaconda
另一种方法是,anaconda为使用python进行分析和科学工作提供了便利,这就是它如何捆绑和使可访问的几个常见项目能够交互地处理数据。
其中最常见的两个项目是jupyternotebook和jupyterlab,它们为编写python代码、导入数据、运行实验和可视化结果提供了实时环境。anaconda负责运行笔记本和jupyterlab实例的所有设置和管理,因此与它们一起工作只需单击导航器主菜单中的每个应用程序旁边的启动按钮即可。你也可以通过点击应用程序的gear图标来安装之前版本的应用程序,假设它们是可用的。
其他绑定应用程序包括:
qtconsole:使用qt接口库的jupyter的gui。如果你想通过一个本地的界面来工作,而不是通过网络浏览器,那么它是很有用的。
spyder:科学计算的python开发环境,一个用python编写的迷你ide,主要面向开发人员编写与ipython/jupyter笔记本相关的应用程序。它还可以用作python应用程序的库,这些应用程序需要一个类似于ide的接口。
rstudio:用于处理r语言的工具,用于许多数据分析领域。python在r的用户中越来越受欢迎,但是仍然有很多场景,r仍然是选择的语言,rstudio提供了使用这两种语言一起工作的方法。
anaconda捆绑了许多辅助应用程序,如jupyternotebook,一个用于python的浏览器内交互式工作环境。jupyter的所有管理细节都由anaconda自动处理。
miniconda,轻量级的anaconda
如果你想使用anaconda,但是不要同时安装所有的东西,可以使用miniconda的增量方法。
miniconda只安装需要从anaconda开始的绝对最小值:python解释器(由anaconda打包)、conda包管理器和一些其他基本位。您可以在命令行中使用conda添加更多的组件或创建环境,就像您对完整版本的anaconda所做的那样。
如果你不是一个数据科学的用户,但是你想要利用anaconda的设计和包装,miniconda是一个使用python的好方法。包通常更容易处理conda,如果您需要它,您可以访问更广泛的anaconda软件生态系统。
有几件事值得记住:
首先,anaconda navigatorgui不是默认安装的,但是您可以在conda (conda安装anaconda - navigator)之后添加它。
第二,miniconda默认设置为miniconda目录,而不是anaconda。这可能会让一些人对使用miniconda安装的路径做出假设。
第三,在某些方面,最重要的是,conda只能通过conda自己的存储库来安装包。它不用于安装通过默认的python包存储库pypi提供的包。您可以使用标准的python包管理工具pip,从miniconda内部的pypi上安装python包,但是这些包不能由conda管理,只有pip。如果你绝对希望conda管理一切。