Anaconda指的是一个开源的python发行版本,其包含了conda、Python等180多个科学包及其依赖项。

Anaconda是一个开源的包、环境管理器,可以用于在同一个机器上安装不同版本的软件包及其依赖,并能够在不同的环境之间切换。

conda介绍

conda 是开源包(packages)和虚拟环境(environment)的管理系统。

  • packages 管理: 可以使用 conda 来安装、更新 、卸载工具包 ,并且它更关注于数据科学相关的工具包。在安装 anaconda 时就预先集成了像 Numpy、Scipy、 pandas、Scikit-learn 这些在数据分析中常用的包。另外值得一提的是,conda 并不仅仅管理Python的工具包,它也能安装非python的包。比如在新版的 Anaconda 中就可以安装R语言的集成开发环境 Rstudio。
  • 虚拟环境管理: 在conda中可以建立多个虚拟环境,用于隔离不同项目所需的不同版本的工具包,以防止版本上的冲突。纠结Python 版本时,可以建立 Python2 和 Python3 两个环境,来分别运行不同版本的 Python 代码。

conda的环境管理

conda的环境管理功能允许用户同时安装若干个不同版本的python,并能自由切换。

1、安装一个新环境

比如要安装一个python 3.4环境,需要做如下操作:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# 创建一个名为python34的环境,指定Python版本是3.4(不用管是3.4.x,conda会为我们自动寻找3.4.x中的最新版本)
conda create --name python34 python=3.4

# 安装好后,使用activate激活某个环境
conda activate python34 # for Windows
source activate python34 # for Linux & Mac
# 激活后,会发现terminal输入的地方多了python34的字样,实际上,此时系统做的事情就是把默认2.7环境从PATH中去除,再把3.4对应的命令加入PATH

# 此时,再次输入
python --version
# 可以得到`Python 3.4.5 :: Anaconda 4.1.1 (64-bit)`,即系统已经切换到了3.4的环境

# 如果想返回默认的python 2.7环境,运行
conda deactivate # for Windows
deactivate python34 # for Windows
source deactivate python34 # for Linux & Mac

# 删除一个已有的环境
conda remove --name python34 --all

如果出现An unexpected error has occurred. Conda has prepared the above report.

emm vpn没关

更换conda下载源

1
2
3
4
conda config --add channels conda-forge
conda config --set channel_priority strict

conda install jupyterlab-variableinspector #设置之后就不需要在 -c conda-forge 了

2、查看已安装的环境

用户安装的不同python环境都会被放在目录~/anaconda/envs 目录下:

1
2
3
4
5
6
$ conda info -e
# conda environments:
#
base                  *  /Users/hqs/anaconda3     # 当前被激活的环境会显示一个星号或括号
python27                 /Users/hqs/anaconda3/envs/python27
python37                 /Users/hqs/anaconda3/envs/python37

Conda包管理

1、查看操作

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 查看当前环境下已安装的包
$ conda list
# packages in environment at /Users/hqs/anaconda3:
#
# Name                           Version                   Build  Channel
_ipyw_jlab_nb_ext_conf    0.1.0                    py36_0  
alabaster                          0.7.12                   py36_0 
...                                    ...                          ...
zope.interface                   4.6.0            py36h1de35cc_0  
zstd                                 1.3.3                h2a6be3a_0 

# 查看某个指定环境的已安装包
$ conda list -n python27
# packages in environment at /Users/hqs/anaconda3/envs/python27:
#
# Name                    Version                   Build  Channel
ca-certificates           2018.03.07                    0  
certifi                   2018.10.15               py27_0  
libcxx                    4.0.1                hcfea43d_1  
libcxxabi                 4.0.1                hcfea43d_1  
libedit                   3.1.20170329         hb402a30_2  
libffi                    3.2.1                h475c297_4  
ncurses                   6.1                  h0a44026_0

# 查看package信息
$ conda search numpy
Loading channels: done
# Name                  Version           Build  Channel             
numpy                     1.5.1          py26_0  anaconda/pkgs/free  
numpy                     1.5.1          py26_0  pkgs/free           
numpy                     1.5.1          py26_4  anaconda/pkgs/free 
...                            ...              ...

2、包管理操作

Anaconda管理python包。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# 安装package
conda install pandas

# 使用参数安装package
conda install -n python37 numpy
    # 使用-n指定要按照的环境名称
    # 不使用-n则按照在当前活跃环境
    # -c指定通过某个channel安装

# 更新package
conda update pandas
conda update -n python37 numpy

# 删除package
conda remove -n python37 numpy 

3、conda管理

conda将conda、python都视为package,因此也可以使用conda来管理conda和python的版本。

1
2
3
4
5
6
7
8
9
# 更新conda,保持conda最新
$ conda update conda

# 更新anaconda
$ conda update anaconda

# 更新python
$ conda update python
# 当前环境如果是python 3.7,conda会将Python升级为3.7.x系列当前最新版本

conda和pip安装库之间的区别

conda和pip安装库的区别

在Anaconda中,无论在哪个环境下,只要通过conda install xxx的方式安装的库都会放在Anaconda的pkgs目录下,如:E:\python\anaconda\pkgs\numpy-1.18.1-py36h48dd78f_1。这样的好处就是,当在某个环境下已经下载好了某个库,再在另一个环境中还需要这个库时,就可以直接从pkgs目录下将该库复制至新环境(将这个库的Lib\site-packages中的文件复制到当前新环境下Lib中的第三方库中,也即Lib\site-packages中,这个过程相当于通过pip install xxx进行了安装)而不用重复下载。

conda和pip卸载库的区别

pip是在特定的环境中进行库的安装,所以卸载库也是一样的道理,通过pip uninstall xxx就可以将该环境下Lib\site-packages中对应的库进行卸载了。

如果通过conda uninstall xxx删除当前环境下某个库时,删除的只是当前环境下site-packages目录中该库的内容,它的效果和通过pip uninstall xxx是一样的。如果再到另一个环境中通过conda install xxx下载这个库,则还是通过将pkgs目录下的库复制到当前环境。若要清空这个pkgs下的已下载库,可以通过命令conda clean -h进行实现。