浅说Anaconda

动机

        在我对MacOS进行更新之后,我的TensorFlow不能用了。整了半天,感觉自己把电脑整得很乱了,于是我想到了备受夸赞的Anaconda。

安装与卸载

        我是在MacOS Sierra 10.12.2下进行安装的,装的是Miniconda2,毕竟Mac硬盘不大是中所周知的……。
        我们可以参照官网的《User Guide:Installation》进行安装,安装过程比较简单,先是下载一个installer(实际上就是一个.sh文件),然后bash这个文件,接着按照提示一步步走就行了。至于卸载,也在这个网页里面,直接rm -rf就行。

初探

        既然装了,那就要上手用用,首先输入:

conda list

        这将显示在conda中安装的所有的包。
        然后我们输入:

$ python --version

        输出不是“Python 2.7.14”这样的,后面竟然还加了一串“Anaconda”字样:




        当我们直接输入python时,也是直接进入了Anaconda的掌控范围之中:



        这个时候我就在想,那我怎么回到系统自带的Python Shell中呢?要回答这个问题,我们首先得搞清楚,Anaconda是如何对我们的Python实施“绑架”的。回忆安装时的步骤,发现其中有一步是是往我们的~/.bash_profile中加入下面的语句:



        这样一来,我们就明白为什么输入python会直接进入到Anaconda Python中了:因为我们在输入命令时,Linux会去查找PATH变量里面记录的路径,而上面这个语句将miniconda2/bin放在了原有的python路径之前,因此输入python的时候,将会优先执行Anaconda Python。
        搞清楚了这个问题,我们就得到了问题“如何在Linux系统自带的Python与Anaconda之间切换”的解决方案,即注释掉上面的语句,然后重新打开一个Terminal。但有时候我们又会觉得这样做很麻烦,那怎么办?只能给他们“一 Py 一 个”名字了。
        打开~/.bash_profile文件,并加入:

alias py="/usr/bin/python2.7"
alias pyana="/home/gewei/Miniconda/miniconda2/bin/python2.7"

        输入pyana进行测试:




        输入py进行测试:



        恩,我们成功了。值得注意的是,如果我们输入python,那么仍然选择的是Anaconda Python,这是由PATH中的顺序决定的。在上面的步骤中可能有人会问,为什么不是加入到~/.bashrc中呢?
        这个问题涉及到了MacOS与Linux的不同。Unix中,只有当Shell是Login Shell的时候,.bash_profile才会被加载,而.bashrc则是Non-Login Shell就会加载。在Linux中,当用户登录到一个图形界面,然后打开一个终端Terminal,这时Shell是Non-Login Shell;而在OS X登录时,或者说我们打开一个Terminal的时候,其实是打开的Login Shell。所以这里我们直接在~/.bash_profile中进行修改。关于MacOs打开一个Shell是Login Shell这个事情,我们可以验证一下:



        可见我没有乱说话,哈哈~

使用

        在Shell中输入conda info:




        这些信息能够让我们对于conda有一个大致的了解。比如说我们知道Anaconda集包管理功能和环境管理功能于一身,这就可以在上面得以体现,“channel URLs”、“activate environment”。此外,我们需要知道的是,Anaconda是一个用于科学计算的Python发行版,它与一般Python发行版的区别是多了一些管理的功能,并集成了一些科学计算库。
        最后,我们列出一些常用的conda指令:

conda create -n [name]     #创建名为name的conda环境,如tensorflow
source activate [name]     #激活我们创建的环境,命令完成后,发现命令行之前多了刚创建的环境的名字
source deactivate [name]    #退出名为name的环境,回到系统默认环境
conda remove -n [name] --all   #删除刚刚创建的conda环境 
conda info -envs    #查看所安装的环境的列表,创建的环境都在`~/anaconda2/envs/`目录下面
conda list      #查看已经安装的包
conda install [PACKAGENAME]        #安装具体的包,加-n [name]可以安装到指定环境
conda list -n [name]      #name环境下安装了哪些包
conda update -n [name] [PACKAGENAME]     #升级name环境的名为PACKAGENAME的包
conda remove -n [name] [PACKAGENAME]     #删除name环境的名为PACKAGENAME的包

        有一点大家需要注意一下,假如我们想要将某个包,比如说scikit-learn,安装到环境Env1中,如果我们仅仅是激活了Env1,然后输入conda install scikit-learn,那么这时候scikit-learn将被安装到默认的base环境下,所以我们要加上-n Env1。换句话说,conda指令本身是默认绑定在base环境下的。
        不过这会引出一个问题:“为什么我在某个环境Env1下,使用pip install是直接将包安装到了这个Env1中呢?”因为我们source activate某个环境其实就是将这个环境的路径(比如envs/tensorflow)加到了PATH最前面,所以当我们在Env1下执行pip install的时候使用的是envs/Env1/bin文件夹下的pip,因此就装到Env1中咯。


        恩,希望我会在使用Anaconda的路上越走越远~




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值