# pyenv-virtualenv

pipenv与pyenv、pyenv-virtualenv的关系和使用

为什么要有版本管理

我们举个例子:

  1. 项目一要求用python 2.x
  2. 项目二要去python 3.x

如果服务器上要运行这两个项目,就需要安装两个版本。如果项目更多,需要的版本也越多,我们就需要有版本管理的概念。

为什么要有虚拟版本

上面我们看到,版本管理解决了,不同项目对python版本的需求。如果我们服务器上有增加了一个项目,情况如下,如果解决呢

  1. 项目一要求用python 2.x
  2. 项目二要去python 3.x,要求导入的requests包是1.x
  3. 项目三要去python 3.x,要去导入的requests包是2.x

我们看到项目二和项目三要去的是同样的版本,但是依赖的包是不同版本的,我们无法在一个版本上,同一个包安装不同的版本。这样容易造成混乱。因此就需要虚拟环境了。虚拟环境就是在所需的版本上,创建一个副本,在副本里进行依赖包的管理,这样不同的项目用自己的副本,就不会相互干扰。