Anaconda,虚拟环境,环境变量, Conda, pip ,Anaconda prompt,cmd,pycharm的作用及其关系

引言:安装python可以看到很多教程都提到用Anaconda,而且有时还可以看见安装Conda的,他们有什么区别?安装时还要设置环境变量,环境变量是什么,作用是什么?使用Anaconda时(Anaconda3版本应该是最新的),有的教程要求我们新建一个虚拟环境,虚拟环境是什么?这个环境和Anaconda的环境又有什么区别?安装包的方式有conda install xxx或者pip install xxx,这两种方式一样吗? 如果想看虚拟环境中安装了哪些包,可以执行conda list指令,那它是在谁下面执行,是在python下还是虚拟环境下?本人在使用python时,发现python与C的不同之处,遇到以上问题并解决,现在记录下来回忆加深理解,如果能帮助到别人就更好了。有些问题我并未深究,可能是合情推理,若有错误请理解,如果能回复让我修改便不胜感激了。【本文只是为理清安装使用过程中涉及到的各个概念的含义及其作用,无具体安装过程】

一. 安装Python需要什么(安装python麻烦的原因)

        一般的语言都需要一个IDE(集成开发环境)来解释它,最后变成二进制代码去执行,就像C的Devc++和Visual Studio一样。Python有一个好用的IDE叫pycharm(可以免费试用)。但是直接安装pycharm新建python项目会提示“interpreter field is empty”,就是没有解释器。【解释一下:C语言是编译型语言,要编译后成二进制代码计算机才可以执行。python是解释型语言,要用解释器解释为二进制代码计算机才可以执行。因为C语言的IDE如Devc++里面自带编译器,所以没这问题。但是pycharm没有自带解释器,所以要自己另外下载】。Python.exe就是我们需要下载的python解释器文件。那为了下载这个Python.exe文件及其依赖包,就需要去官网下载,或者用Anaconda。

二. Anaconda,Miniconda和Conda

       搜一下就可知道,Anaconda指的是一个开源的Python发行版本,是一个开源的Python包管理器,其包含了conda、Python等180多个科学包及其依赖项。Anaconda较大(因为包很多),Miniconda是个较小的发行版(仅包含conda和 Python)。Conda 是一个开源的软件包管理系统和环境管理系统。个人理解,就是要通过Anaconda或者Miniconda来使用python,而Conda是管理python的工具,Anaconda和Miniconda都有了Conda。且Anaconda里面已经包括了很多包,比如矩阵计算需要的库numpy,这样就方便不少,不用下载很多包了。如果只下载Miniconda,要用其他包的话就需要另外下载。下载常见指令是conda install xxx或者pip install xxx(xxx指包的名称,如numpy,具体怎么运行见第五点),它们处理方式细节我并未深究,一般情况下都可以下载包。【注意:要使用pip指令,可能需要安装pip,可以看出pip和conda既是包或者管理系统的名称,又是其指令的开头,比如pip包含pip install xxx等指令 。显然,Anaconda包括了pip,不需要另行安装,Miniconda应该需要另外安装(我推理的)】。

三. Anaconda&虚拟环境

       如果为了方便,可以直接下载Anaconda。前面说过,Anaconda是一个包管理器。包含有一个虚拟环境,那虚拟环境是什么?就是要运行python命令,就需要解释器Python.exe解释它。要想在代码里import numpy,就需要numpy的包,然后肯定还需要链接库啊其他什么的。这些东西就构成了一个虚拟环境【唠叨一下,刚开始学可能对虚拟这个词觉得奇怪,计算机嘛用虚拟很正常的,就像内存的实地址和虚地址,虚实地址之间有一层映射,你看到地址实际是虚地址。那推理一下这里的虚拟环境就是我们“看到的”环境,如果不是专业领域,那就用就行了呀,管它有没有“真实环境”】。现在先说说虚拟环境的作用。运行python程序,肯定需要一个虚拟环境。以下以我的演示为例:【注意,QQ是用户名,不是腾讯QQ的意思,你的电脑设置是啥就是啥

       conda env list的意思是显示所有虚拟环境。可见我有一个根环境“root”(好像有的人叫base)。另外我还创建了名为“MaskRCNN”和“tensorflow-gpu”的虚拟环境。之前我们不是说Anaconda自带了很多科学包吗,说的就是“root”这个虚拟环境带有的包。我们如果想要新建一个虚拟环境,需要在新的环境里面重新下载包,他们是不互通的。下图为我在pycharm下运行一个python程序前选择我所需的环境,可以看到tensorflow-gpu的虚拟环境的包很少而root的包很多(我没截完,反正就是很多了)。

                                                                                          root的虚拟环境

                                                                                    tensorflow-gpu的虚拟环境

       从上面可以看到,root虚拟环境的解释器python.exe就在Anaconda3文件夹下,而另外两个在envs文件夹下对应的文件夹里。 【如果要问我为什么要分这么多,谁都用一个包含全部依赖包的root虚拟环境不就好了,干嘛搞这么麻烦,其实有一些场合,比如你以前用python2.7写过一个项目,现在都更新用3.6了,如果Anaconda只能用一个环境,那以前的项目就开不了了,所以要分环境,不同项目的需求可能不同】。

四. 环境变量

       安装Anaconda时需要设置环境变量,环境变量是什么?我自己的理解如下,环境变量就是某些特定的文件路径,如下图所示。

(搜一下就知道怎么打开了)。怎么理解我上诉所说的“特定的”,显然就是指添加到这里的文件路径啦。因为一台电脑可以设置多个用户(虽然一般我们可能只有一个)。如图如果设置到用户变量,就只对这个用户有效,若设置到系统变量就对每个用户都有效。设置环境变量的作用看第五点的第二段。

五. cmd&命令提示符& Anaconda Prompt&DOS操作系统

      在Win10搜索栏里搜索cmd就会出现一个小黑框,cmd就是命令提示符。cmd 可以理解为Windows操作系统兼容的DOS操作系统。它的指令执行方式是命令行,也是我们实现系统调用的一种方式,而Windows是图形界面。比如在cmd下输入calc,就会进行系统调用,显示计算器;输入notepad就会弹出一个记事本。那我们前面所说的pip install xxx就是在这里执行的,但是要先进入一个虚拟环境中,意思就是进入一个虚拟环境然后安装需要的包。

      现在回到环境变量。我们要查看Anaconda下有哪些虚拟环境,需要在cmd里输入conda env list。但是谁来执行这行指令呢,需要别人来解释它啊【注意:这个不是python语言的指令,python语言的指令应该进入某个虚拟环境的python.exe中执行,而conda env list是在针对包管理器Anaconda,找出它所有的虚拟环境】。实际上,Windosw是在Path环境变量设定的所有路径中去找到某种东西去解释它。这个东西具体是什么我没深究,但经过实验,如果我没有在Path环境变量中增添C:\Users\QQ\Anaconda3\Scripts这条路径,系统找不到东西来解释它,所以出现以下情况:

 

        按Anaconda的教程安装并配置好环境变量后,再运行上图指令,就可以显示Anaconda下有哪些虚拟环境,说明系统通过名为Path,值为“C:\Users\QQ\Anaconda3\Scripts”的环境变量(其实就是路径)找到了可以执行该条指令的程序,便执行成功。如下:

而且通过观察目录,就可以知道root虚拟环境就在Anaconda文件夹里,而另外两个就在其envs文件夹里,如图:

       总结一下,设置环境变量,就是为了告诉cmd 要执行“conda env list”指令应该去找谁翻译执行,而这个 C:\Users\QQ\Anaconda3\Scripts(看名字显然是放与脚本相关的东西)就是它需要的环境变量。系统默认到Path里找,自然要到Path里设置。这样,即使就在用户目录下执行指令也可以执行成功。实际上,安装完Anaconda后有一个叫Anaconda Prompt的类似cmd的东西。如果在这里输入“conda env list”也可以正确执行,即使Path没有配置好环境变量,如图:

 

       同理,如果在cmd里输入python.exe,Windows就会在Path的所有路径中找到python.exe文件并执行(如果把Path中的C:\Users\QQ\Anaconda3路径删除也会同样找不到,但若在Anaconda Prompt中总是可以成功执行)。我打开Anaconda Prompt所在位置,最后打开的是cmd,感觉这个也是调用了系统的cmd,只不过它是针对Anaconda而言的,方便使用。简言之,就是Anaconda通过在Anaconda Prompt或者cmd上运行指令如conda list来管理虚拟环境,而python语言编写的代码是通过Anaconda管理的某个虚拟环境中的解释器python.exe解释执行的。

六. 个人总结

       一切的起因都是要用python,但是它的IDE没有python解释器,所以我们要去下载一个。Anaconda是比较好的python管理器,所以推荐安装它。Anaconda又可以分很多个虚拟环境来管理,我们使用Anaconda里的python解释器是使用其某一个虚拟环境中的python解释器。(如第三点中图“root的虚拟环境”,可以看到Anaconda三个虚拟环境中都各自有自己的python.exe解释器文件)。同时我们要管理这个Anaconda中的虚拟环境,用的是cmd或者Anaconda Prompt。最后,要用一个IDE来编写调试python代码,我使用pycharm比较顺手,除此之外还有人喜欢用Jupyter Notebook。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章