一、virtualenvwrapper ,anaconda,pipenv 这三个都是虚拟环境。

virtualenvwrapper和pipenv使用一个就够了 随便哪个都可以,
anaconda出来的目的是因为机器学习的各种库太多了,其中某些安装还容易出错,
所以anaconda出来直接帮你所有的都装好,因为anaconda越来越大,所以anaconda内置了虚拟环境。

所以如果你想做机器学习使用anaconda就可以了,安装了anaconda之后可以不用安装virtualenv或者pipenv了,
如果你不做机器学习就不用安装anaconda了,因为anaconda不一定能支持到python的最新版本,
而且内部安装的库很多占空间比较大

①为什么我们需要anaconda来管理我们的python环境?

答: 比如说在windows环境下
一个python环境中需要有一个解释器(python.exe), 和一个包集合(Lib)。

解释器根据python的版本大概分为2和3. python2和3之间无法互相兼容, 
也就是说用python2语法写出来的脚本不一定能在python3的解释器中运行.

包集合中包含了自带的包和第三方包, 第三方包我们一般通过pip或者easy_install来下载,
当一个python环境中不包含这个包, 那么引用了这个包的程序不能在该python环境中运行.
比如说一个爬虫脚本用到了第三方的requests包,而另一台计算机是刚刚装好原始python的, 也就是说根本没有任何第三方包, 那么这个爬虫脚本是无法在另一台机器上运行的.

python2和python3在语法上是不兼容的, 那我的机器上应该装python2还是python3呢, 
, 那这时候环境变量该设谁的目录呢, 如果还是切换环境变量岂不是很麻烦.

如果我在本地只有一个python环境那我所有程序用到的各种包都只能放到同一个环境中, 导致环境混乱, 
另外当我将写好的程序放到另一电脑上运行时又会遇到缺少相关包, 
需要自己手动一个个下载的情况, 实在是烦人,
要是能每个程序开发都选用不同的环境, 而开发好之后又能将该程序需要的环境(第三方包)都独立打包出来就好了.

用Anaconda可以解决我们上面的问题.
(1)解决上面所提及的单个python环境所带来的弊端了.
(2)当然anaconda除了包管理之外还在于其丰富数据分析包
转载借鉴自:https://www.jianshu.com/p/eaee1fadc1e9

二、关于虚拟环境anaconda
①anaconda是什么?

Anaconda则是一个打包的集合,里面预装好了conda、某个版本的python、众多packages、科学计算工具等等。

自己的总结:Anaconda是conda的超集;conda是管理包和环境的工具。
②conda是什么?

conda可以理解为一个工具,也是一个可执行命令,其核心功能是包管理与环境管理。
包管理与pip的使用类似,环境管理则允许用户方便地安装不同版本的python并可以快速切换。 
conda的设计理念——conda将几乎所有的工具、第三方包都当做package对待,甚至包括python和conda自身。

三、使用anaconda
所以:
1、首先,在所在系统中安装Anaconda。

可以打开命令行输入conda -V检验是否安装以及当前conda的版本。
conda list 查看安装了哪些包;
conda env list 或 conda info -e 查看当前存在哪些虚拟环境
conda update conda 检查更新当前conda

2、创建Python虚拟环境

使用 conda create -n your_env_name python=X.X(2.7、3.6等),
anaconda 命令 创建python版本为X.X、名字为your_env_name的虚拟环境。
your_env_name文件可以在Anaconda安装目录envs文件下找到。

可以发现我们之前创建的your_env_name目录就在下面, 再点进去,这不就是一个标准的python环境目录吗?
anaconda所谓的创建虚拟环境其实就是安装了一个真实的python环境, 
只不过我们可以通过activate,conda等命令去随意的切换我们当前的python环境, 
用不同版本的解释器和不同的包环境去运行python脚本.

举个例子:
# 指定python版本为2.7,注意至少需要指定python版本或者要安装的包
# 后一种情况下,自动安装最新python版本 conda create -n env_name python=2.7 
# 同时安装必要的包 conda create -n env_name numpy matplotlib python=2.7
例如:
conda create -n env_name numpy matplotlib python=3.7

3、使用激活(或切换不同python版本)的虚拟环境。

打开命令行输入python --version可以检查当前python的版本。
    查看版本                  python -V
	查看conda存在哪些虚拟环境  conda env list

    使用如下命令即可 激活你的虚拟环境(即将python的版本改变)。
    Linux:  source activate your_env_name(虚拟环境名称)
    Windows: activate your_env_name(虚拟环境名称)

   这是再使用python --version可以检查当前python版本是否为想要的。
//-- 退到(base)下是conda deactivate

4、对虚拟环境中安装额外的包。

使用命令conda install -n your_env_name [package]即可安装package到your_env_name中.
例如:conda install -n env_name pytest-astropy==0.9.0

5、查看虚拟环境中安装的包 :

pip freeze
pip list

6、关闭虚拟环境

conda deactivate

7、删除虚拟环境

移除环境:
使用命令 例如: conda env remove -n env_name
移除环境中的某个包:
使用命令 例如:conda remove pytest-astropy

最后开发IDE,在windows下

与pycharm连接
在工作环境中我们会集成开发环境去编码, 这里推荐JB公司的pycharm,
而pycharm也能很方便的和anaconda的虚拟环境结合

在Setting => Project => Project Interpreter 里面修改 Project Interpreter , 
点击齿轮标志再点击Add Local为你某个环境的python.exe解释器就行了。

比如你要在learn环境中编写程序, 那么就修改为D:\Software\Anaconda\envs\learn,