Anaconda-从入门到入土
引入
刚刚入门Python的同学可能对环境配置并没有什么感觉,毕竟就是一个pip的事,这时候我们设想一下,现在你在Github上下载了一个Python项目,然而这个项目需要你的numpy版本为1.12,而你的numpy版本是1.11,那么你是不是就要删除再安装?这仅仅是一个项目,而在日常编程中经常面对这种问题,而Anaconda就解决了这个问题。
Python环境
这里我随便打开了一个我电脑上的Python的源文件:
在这里Lib中存放了Python的官方包和第三方包,所有的第三方包都在site-packages中,这其中就有我们常用的matplotlib。
Anaconda
Anaconda(官网)就是可以便捷获取包且对包能够进行管理,同时对环境可以统一管理的发行版本。Anaconda包含了conda、Python在内的超过180个科学包及其依赖项。
下载
下载一般是没有什么难度的一步一步的走下去就行,这里简单提一下,Anaconda有标准版和mini版,如果你的电脑内存吃紧,那可以考虑安装mini-conda,功能上只是没有图形化界面,但是真的小很多。
配置环境变量
在控制面板\系统和安全\系统\高级系统设置\环境变量\用户变量\PATH中添加anaconda的安装目录的Scripts文件夹,比如我的路径是F:\miniconda3\Scripts,看个人安装路径不同需要自己调整。
这个学习过Java的同学应该对这套工作已经很熟悉了。配置完成后,就可以在你的shell界面(win+R输入cmd,也就是命令行界面)输入命令:
conda--version
显示出你的Anaconda版本即表示配置成功。
Anaconda本身是自带一个AnacondaPowershellPrompt的命令行工具,
为了避免可能发生的错误,我们先把所有工具包进行升级,在命令行输入:
condaupgrade--all
Anaconda与虚拟环境
首先回顾一个操作系统中的概念:虚拟。
操作系统中的虚拟性是指通过软件技术将一个物理资源分割为多个逻辑资源,是多个应用程序可以同时使用这些逻辑资源,从而提高系统的利用率和效率。
这里我们用人话描述一下就是把一整块资源转化成好多个逻辑资源,但实际上还是这些资源,虚拟环境也是这样的思路。具体的原理大家可以参见[TheguidetoPythonvirtualenvironmentswithconda]这篇博客,写的非常详细。
Anaconda常用命令
进入环境activate
activate(意为:激活,学过神经网络的懂都懂),在shell中输入:
condaactivate
就可以直接进入Anaconda自带的base环境中,如果这时候输入Python那么就进入的当下base环境中的Python,而不是原来电脑中的Python。
创建环境create
创建虚拟环境的命令:
condacreate-nmlpython=3.7
上面的命令的含义简单介绍一下,-n表示要写入他的名字也就是name,Python=3.7指下载3.7版本的Python
切换环境activate
其实还是进入,只不过从真实到虚拟和虚拟到虚拟,所以我一直将这个命令叫做激活。
condaactivateml
这样就切换到了ml的虚拟环境中,这里特别强调一点,如果环境名记不住的话,写错了是切换不进去的,所以我们还有下面这条命令。
查看环境envlist
condaenvlist
安装第三方包install
condainstallrequests
conda命令的安装好处就在于会直接帮你安装好依赖,但是坏处是慢,不稳定,而且有时候会不如pip下载灵活。因此,只要能切换到虚拟环境中去,那么依然可以使用pip命令进行安装。
pipinstallrequest
卸载第三方包remove
condaremoverequests
或者
pipuninstallrequests
导入导出环境
导出当前环境的包信息可以用命令
condaenvexport>name.yaml
将包信息存入yaml文件中,当需要重新创建一个相同的虚拟环境时可以用:
condaenvcreate-fname.yaml
连接到Pycharm
Pycharm相对更为方便,在Setting=>Project=>ProjectInterpreter里面修改ProjectInterpreter。可能是一个小齿轮,也可能是Addinterpreter。
然后在里边设置你的conda本地路径,就可以使用了。
连接到Vscode
安装Python插件
配置Python解释器
按Ctrl+Shift+P,输入python,选择解释器
添加解释器路径
最后
Anaconda是一个非常好用的包管理软件,比如在Anaconda上使用jupyternotebook等,快速切换包,以及他的一些数据分析包。