继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

项目太多工作环境互相干扰?virtualenv 一招教你轻松解决。

智慧大石
关注TA
已关注
手记 337
粉丝 33
获赞 206

写在之前

在上一篇文章 安装的 Python 版本太多互相干扰?以后再也不用担心这个问题了。 中我给大家介绍了一个 Python 版本的管理工具「pyenv」,可以很容易的安装不同的 Python 版本,进行全局的 Python 版本切换。就这么开开心心的解决了 Python 版本冲突的问题以后,又突然出现了一个新的问题摆上了桌面:假如你手里有两个项目,其中一个项目要求使用 django 1.5 这个版本,但是另外一个项目却要求使用 django 2.0 这个版本,该怎么办呢?

显然此时如果全局安装 django,肯定是无法满足我们的这个需求。全局安装就安装一个版本,我总不能用另一个的时候把当前这个版本卸掉吧,这样的话那真是就麻烦到家了,这时候我又想到了 Python 的简洁优雅,省心省力,这个问题肯定有解,果不其然,又被我给找到了,这就是我今天要给大家说的「virtualenv」。

「virtualenv」本身就是一个独立的工具,用来隔离不同项目的工作环境。因为上一篇文章所讲的「pyenv」也是用来隔离的,所以很多人容易把这两个搞混,所以在这里我先来说一下两者之间的区别。

区别

「pyenv」是用来管理不用版本的 Python,例如你做某个项目的时候需要用的是 Python 2.7.1 这个版本,但是呢你又想与时俱进,学习一下 Python3,这个时候你就可以用 pyenv 来管理这两个不同版本的 Python。

「virtualenv」是用来隔离不同项目的工作环境,例如你手里的两个项目,用到的都是 Python 2.7.1,但是呢,其中一个项目需要使用 django 1.5,而另一个项目则需要使用 django 2.0,这个时候 virtualenv 横空出世,解决这个问题。

可能到这敏锐的你已经发现,我们只需要把「pyenv」和「virtualenv」这俩工具组合起来,就能够让任意版本的 Python 和 任意版本的第三方库随意组合,这种随意组合保持着很高的灵活性,同时也避免了不同项目之间可能发生的工作环境的冲突。

我在上面说过「virtualenv」是一个独立的工具,我们可以直接使用它。但是鉴于上一篇文章我们学习了 pyenv,本着学以致用,我们还是用 pyenv,我假设你已经学习了上一篇文章,系统中已经有了 pyenv,此时只需要安装 pyenv-virtualenv 这个插件即可。

安装 pyenv-virtualenv

安装 pyenv-virtualenv,手动安装和我们之前安装 pyenv 是一样的,从 GitHub 直接下载到本地,首先执行下面的命令:

git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv

安装的过程如下所示:

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 2005Receiving objects: 100% (2009/2009), 568.83 KiB | 171.00 KiB/s, done.
Resolving deltas: 100% (1373/1373), done.

我们可以看到上面已经安装成功,接下来我们要添加一下环境变量:

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 的使用

pyenv-virtualenv 安装成功以后,我们就可以给同一个 Python 创建不同的虚拟环境,比如像下面这样创建两个新的虚拟环境:

pyenv virtualenv 2.7.1 project1pyenv 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空间」,期待和你的交流。


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP