Anaconda入门

Anaconda简介

Anaconda是一个方便的python包管理和环境管理软件,一般用来配置不同的项目环境。
我们常常会遇到这样的情况,正在做的项目A和项目B分别基于python2和python3,而第电脑只能安装一个环境,这个时候Anaconda就派上了用场,它可以创建多个互不干扰的环境,分别运行不同版本的软件包,以达到兼容的目的。
Anaconda通过管理工具包、开发环境、Python版本,大大简化了你的工作流程。不仅可以方便地安装、更新、卸载工具包,而且安装时能自动安装相应的依赖包,同时还能使用不同的虚拟环境隔离不同要求的项目。

anaconda的安装

windows下anaconda安装

非常简单,前往Anaconda官网 即可下载安装,国内用户可以到清华大学TUNA镜像站下载,安装过程中注意到这一步


 




清华大学镜像ubuntu_包管理


path.png


 

其中第一项指将Anaconda的默认环境设置添加到系统环境,也就是说如果你之前安装过python并添加到了环境,选了这一项之后原来的python会被覆盖掉,默认使用Anaconda的默认环境。

第二项指设置Anaconda的默认环境为python3.5.

安装完成后Anaconda会创建一个叫base的默认环境,如果你不切换到其他指定环境,就会一直在默认环境运行。

linux ubuntu系统Anaconda安装

下载Anaconda.sh 如果无法运行的话修改一下权限

sudo chmod +x 文件名
sudo ./文件名

看完版权声明设置完就好了

 

 

安装完成后如果没有加入系统环境windows需要通过Anaconda Prompt运行(anaconda prompt还有一个好处就是可以显示图表),如果加入系统环境变量就可以在cmd运行了


 


清华大学镜像ubuntu_清华大学镜像ubuntu_02


pystatus.png


我选择了加入系统变量,我们可以看到我的python显示为Anaconda版
anconda使用conda作为包管理工具,也就是anaconda把一些常用的python包统一管理,可以方便的安装、更新和卸载包。
conda常用命令

conda --version 查看conda版本
conda -V
conda --help   获取帮助
conda -h
conda update --help 
conda remove --help

--help 都可以换成-h

Anaconda环境管理

接下来我们先研究单一环境下的Anaconda环境管理。
conda env --help 刚刚系统默认创建了名叫base的默认环境,我们可以使用conda命令查看当前有多少环境
conda env list 查看所有环境 或者
conda info --envs


 


清华大学镜像ubuntu_环境配置_03


condaenv.png


 

我们可以看到只有一个base,也就是刚刚安装的时候勾选的带有python3.5的环境,还有一些py3的包
如果现在我需要一个python2.7的和tensorflow1.0的环境该怎么办呢
输入

conda create --name your_env_name  
或者  
conda create -n your_env_name

your_env_name 就是你新创建的环境名,你可以在里面安装其他包但不会与现有环境冲突

如果你要在创建环境时指定包内容, 可以用

conda create -n your_env_name python=3.5
如果你要指定多个包 可以用
conda create -n your_env_name python=3.5 numpy pandas

要指定特殊版本号加上=版本号就行,默认是最新的
对了,安装前为了保障你查询到最新包情况,最好使用
`conda update --all 更新包信息。

例如我现在要创建一个名叫 learningpy的基于py3的环境

conda update --all
conda create -n learningpy python=3.7


 


清华大学镜像ubuntu_清华大学镜像ubuntu_04


create.png


系统会询问你是否创建,输入y回车后,系统将列出必要安装的包
conda有一点好处是,如果你需要安装一个包,系统将自动检查这个包需要的前置包并且安装,比如你要安装TensorFlow,而TensorFlow会用到很多像前置包像pandas、matiplot等,如果你在单纯的python下没有安装pandas等包就直接安装TensorFlow,那么和有可能无法使用,而使用conda安装TensorFlow将会询问你并自动帮你把缺少的前置包安装好
创建完新的环境我们查看环境列表
conda env list


 


清华大学镜像ubuntu_python_05


list.png


 

只要你的硬盘够大,你就可以创造很多个不同的环境
那么现在我们有多个环境了,如何切换环境呢?
windows
activate 环境名 退出时记得退出命令哦
deactivate linux和mac用户的命令不一样
source source activate 环境名source deactivate 环境名

比如我现在进入刚刚创建的learningpy环境

activate learningpy
python --verion


 


清华大学镜像ubuntu_包管理_06


lpy.png


是不是python已经变成了3.7版本,我现在的环境已经和刚刚的环境没有关系了~~~
一些常用命令

创建一个新环境想克隆一部分旧的环境
conda create -n your_env_name --clone oldname
删除某个环境
conda remove -n your_env_name --all
导出环境配置(非常有用,比如你想帮朋友安装和你一模一样的环境,你可以直接导出一个配置文件给他,就能免除很多人力安装调试)
conda env export > environment.yml
将会在当前目录生成一个environment.yml,你把它交给小伙伴或拷到另一台机器,小伙伴只需要对这个文件执行命令  
conda env create -f environment.yml
就可以生成和你原来一模一样的环境啦

anaconda包管理

上文我们提到了创建环境时的包管理,那么我们创建好环境后如何进行包的安装、更新和卸载呢?
当然我们任然可以通过pip安装更新删除
这里我们介绍conda

conda list 列举当前环境下的所有包
conda list -n packagename 列举某个特定名称包
conda install packagename 为当前环境安装某包
conda install -n envname packagename 为某环境安装某包
conda search packagename 搜索某包
conda updata packagename 更新当前环境某包
conda update -n envname packagename 更新某特定环境某包
conda remove packagename 删除当前环境某包
conda remove -n envname packagename 删除某环境环境某包
conda本身和anaconda、python本身也算包
conda update conda
conda update anaconda
conda update python

conda默认源可能速度比较慢
可以添加其他源,常用的有清华TUNA

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes 在包后面显示来源

第三条执行安装包时会显示来自哪个源,一目了然


 


清华大学镜像ubuntu_python_07


source.png


 

教育网用户可以添加ipv6源,速度很快

conda config --add channels https://mirrors6.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors6.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes 在包后面显示来源

anaconda实现原理解析

anaconda在目录下的envs文件夹保存了环境配置,也就是把所有的安装在这个环境下的包放在同一个文件夹中
当创建一个新环境时,anaconda将在envs中创建一个新的文件夹,这个文件夹包括了你安装在这个环境中的所有包
anaconda通过巧妙的包管理解决的一个大难题,确实方便了很多。
下一期会讲如何在第三方软件中使用anaconda的不同环境配置。