在上一篇文章 安装的 Python 版本太多互相干扰?之后不再用担忧这个问题了。 中我给你们介绍了一个 Python 版本的管理工具「pyenv」,能够很容易的安装不一样的 Python 版本,进行全局的 Python 版本切换。就这么开开心心的解决了 Python 版本冲突的问题之后,又忽然出现了一个新的问题摆上了桌面:假如你手里有两个项目,其中一个项目要求使用 django 1.5 这个版本,可是另一个项目却要求使用 django 2.0 这个版本,该怎么办呢?html
显然此时若是全局安装 django,确定是没法知足咱们的这个需求。全局安装就安装一个版本,我总不能用另外一个的时候把当前这个版本卸掉吧,这样的话那真是就麻烦到家了,这时候我又想到了 Python 的简洁优雅,省心省力,这个问题确定有解,果不其然,又被我给找到了,这就是我今天要给你们说的「virtualenv」。git
「virtualenv」自己就是一个独立的工具,用来隔离不一样项目的工做环境。由于上一篇文章所讲的「pyenv」也是用来隔离的,因此不少人容易把这两个搞混,因此在这里我先来讲一下二者之间的区别。github
「pyenv」是用来管理不用版本的 Python,例如你作某个项目的时候须要用的是 Python 2.7.1 这个版本,可是呢你又想与时俱进,学习一下 Python3,这个时候你就能够用 pyenv 来管理这两个不一样版本的 Python。django
「virtualenv」是用来隔离不一样项目的工做环境,例如你手里的两个项目,用到的都是 Python 2.7.1,可是呢,其中一个项目须要使用 django 1.5,而另外一个项目则须要使用 django 2.0,这个时候 virtualenv 横空出世,解决这个问题。bash
可能到这敏锐的你已经发现,咱们只须要把「pyenv」和「virtualenv」这俩工具组合起来,就可以让任意版本的 Python 和 任意版本的第三方库随意组合,这种随意组合保持着很高的灵活性,同时也避免了不一样项目之间可能发生的工做环境的冲突。app
我在上面说过「virtualenv」是一个独立的工具,咱们能够直接使用它。可是鉴于上一篇文章咱们学习了 pyenv,本着学以至用,咱们仍是用 pyenv,我假设你已经学习了上一篇文章,系统中已经有了 pyenv,此时只须要安装 pyenv-virtualenv 这个插件便可。工具
安装 pyenv-virtualenv,手动安装和咱们以前安装 pyenv 是同样的,从 GitHub 直接下载到本地,首先执行下面的命令:学习
git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
安装的过程以下所示:spa
Cloning into '/Users/rocky/.pyenv/plugins/pyenv-virtualenv'... remote: Enumerating objects: 4, done. remote: Counting objects: 100% (4/4), done. remote: Compressing objects: 100% (4/4), done. remote: Total 2009 (delta 0), reused 0 (delta 0), pack-reused 2005 Receiving objects: 100% (2009/2009), 568.83 KiB | 171.00 KiB/s, done. Resolving deltas: 100% (1373/1373), done.
咱们能够看到上面已经安装成功,接下来咱们要添加一下环境变量:.net
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
环境变量配置成功,接下来咱们要从新载入一下配置文件,在这里咱们是直接推出之后从新登录:
exec "$SHELL"
就这样,「pyenv-virtualenv」就安装完成了。一样咱们能够经过命令行来验证一下它是否安装成功:
pyenv help virtualenv
显示的结果以下所示:
Usage: pyenv virtualenv [-f|--force] [VIRTUALENV_OPTIONS] [version] <virtualenv-name> pyenv virtualenv --version pyenv virtualenv --help -f/--force Install even if the version appears to be installed already
pyenv-virtualenv 安装成功之后,咱们就能够给同一个 Python 建立不一样的虚拟环境,好比像下面这样建立两个新的虚拟环境:
pyenv virtualenv 2.7.1 project1 pyenv virtualenv 2.7.1 project2
咱们能够用以下命令来查看已经建立好的虚拟环境:
pyenv virtualenvs
显示以下:
2.7.1/envs/project1 (created from /home/rocky/.pyenv/versions/2.7.1) 2.7.1/envs/project2 (created from /home/rocky/.pyenv/versions/2.7.1) project1(created from /home/rocky/.pyenv/versions/2.7.1) project2 (created from /home/rocky/.pyenv/versions/2.7.1)
建立完上述的虚拟环境之后,咱们就能够经过命令行来操做它,好比进入(activate)或者退出(deactivate)虚拟环境。当咱们进入到虚拟环境的时候,左边会提示咱们当前所在的环境,由于有时候咱们的本地可能建了不少个虚拟环境,有提示的话能够防止你记错当前你进入的环境,人性化的一批,以下所示:
pyenv activate project1
上述意思是说进入到 project1 的虚拟环境。
(project1) $ pip install django==1.5 (project1) $ pyenv deactivate
进入到 project1 的虚拟环境后,安装了 django 1.5 这个版本,而后退出 project1 这个虚拟环境。
固然仍是能装就能删,若是你看哪一个环境不顺眼,想要删掉它,就用下面的命令:
pyenv virtualenv-delete project1
更多内容,欢迎关注公众号「Python空间」,期待和你的交流。
原文出处:https://www.cnblogs.com/Rocky0429/p/10100705.html