各位 Python 的小伙伴确定多多少少接触过 virtualenv。本文将介绍 virtualenv 以及如何更科学更优雅地使用 virtualenv。api
首先来聊一下 virtualenv
是个什么鬼。bash
在使用 Python
开发的过程当中,工程一多,不免会碰到不一样的工程依赖不一样版本的库的问题;亦或者是在开发过程当中不想让物理环境里充斥各类各样的库,引起将来的依赖灾难。此时,咱们须要对于不一样的工程使用不一样的虚拟环境来保持开发环境以及宿主环境的清洁。这里,就要隆重介绍 virtualenv
,一个能够帮助咱们管理不一样 Python
环境的绝好工具。virtualenv
能够在系统中创建多个不一样而且相互不干扰的虚拟环境。另外,值得一提的是,在 virtualenv
的虚拟环境中使用 pip
安装依赖还能够绕过某些系统的权限设置,由于毕竟不须要向系统目录写入数据嘛~~网络
那么,virtualenv
是怎么运行的呢?app
首先从安装讲起,这里假设已经安装了 pip
,若是没有安装 pip
的话,请自行出门谷歌(好吧,我是好人,附上pip
官方文档连接)。以后就能够用 pip
来直接安装 virtualenv
了。固然,这里多是须要使用 sudo
提高权限的,毕竟是在宿主物理环境里安装。以下命令中 sudo
省略,若有需求请自行添加。ide
pip install virtualenv
好了如今你拥有了 virtualenv
虚拟环境管理器。工具
接下来讲使用。网站
好比咱们想要作一点奇怪的事情,写一个脚本去抓取某个网站的信息,咱们暂且把这个工程叫作 spider
吧。这个工程里须要访问网络,咱们打算使用为人类编写的网络访问库 requests
,可是咱们又不想在宿主环境中安装这个包。让咱们开始吧。code
假设咱们把这个工程放在 /path/to/project/spider/
目录下,而且这里咱们把虚拟环境直接放在工程目录下。首先,咱们在这个目录下创建一个虚拟环境。ip
virtualenv /path/to/project/spider
这样,虚拟环境就创建好了。此时能够看到,在这个目录下面会有三个目录被创建:开发
bin
include
lib
其中,bin
目录中包含一些在这个虚拟环境中可用的命令,以及开启虚拟环境的脚本 activate
;include
中包含虚拟环境中的头文件,包括 Python
的头文件;lib
中就是一些依赖库啦~~
固然,如今咱们尚未进入到虚拟环境中。激活虚拟环境只须要一条命令。
source /path/to/project/spider/bin/activate
此时就能够咱们就已经在虚拟环境中啦。
接下来安装工程须要的 requests
库。
pip install requests
搞定!
这时候在虚拟环境里就有了 requests
库,宿主环境中则不会被干扰。
那么如何退出虚拟环境嘞?退出就更简单啦,只须要下面一个命令就搞定啦。
deactivate
此时就回到了进入虚拟环境以前,一切都好像没发生过。多年之后,若是你忘记了虚拟环境的位置,一切就真的没发生过了 = =
补充一句,若是想要删除虚拟环境,只要把这个目录下的 bin
、include
和 lib
三个目录删掉就行了。
为神马须要 virtualenvwrapper
?这要从 virtualenv
提及。
上一节结束的时候说,若是忘记了虚拟环境的位置,一切就真的没发生过了。虽然是句玩笑,不过真的会发生哦~
virtualenv
的一个最大的缺点就是,每次开启虚拟环境以前要去虚拟环境所在目录下的 bin
目录下 source
一下 activate
,这就须要咱们记住每一个虚拟环境所在的目录。
一种可行的解决方案是,将全部的虚拟环境目录全都集中起来,好比放到 ~/virtualenvs/
,并对不一样的虚拟环境使用不一样的目录来管理。virtualenvwrapper
正是这样作的。而且,它还省去了每次开启虚拟环境时候的 source
操做,使得虚拟环境更加好用。
一样,从安装开始。
安装 virtualenvwrapper
也可使用 pip
的方式。须要加入 sudo
的话请自行加入哦~
pip install virtualenvwrapper
不过,在 Mac OS X El Capitan 上可能会出现安装报错的状况,主要问题出在一个叫作 six
的包上。所以安装的时候,能够采用以下方式。
pip install virtualenvwrapper --ignore-installed six
如今,咱们就拥有了一个能够管理虚拟环境的神器。
首先,须要对 virtualenvwrapper
进行配置。它须要指定一个环境变量,叫作 WORKON_HOME
,而且须要运行一下它的初始化工具 virtualenvwrapper.sh
,这个脚本在 /usr/local/bin/
目录下。WORKON_HOME
就是它将要用来存放各类虚拟环境目录的目录,这里咱们能够设置为 ~/.virtualenvs
。
export WORKON_HOME='~/.virtualenvs' source /usr/local/bin/virtualenvwrapper.sh
因为每次都须要执行这两部操做,咱们能够将其写入终端的配置文件中。例如,若是使用 bash
,则添加到 ~/.bashrc
中;若是使用 zsh
,则添加到 ~/.zshrc
中。这样每次启动终端的时候都会自动运行,终端其中以后 virtualenvwrapper
就能够用啦。
利用 virtualenvwrapper
,咱们可使用下面的命令轻松建立一个虚拟环境。
mkvirtualenv spider
以后咱们就有了一个叫作 spider
的虚拟环境。它被存放在 $WORKON_HOME/spider
目录下。
新建虚拟环境以后会自动激活虚拟环境。若是咱们平时想要进入某个虚拟环境,能够用下面的命令。
workon spider
这也就是为何环境变量中存放虚拟环境的目录为啥叫作 WORKON_HOME
。顺便说一句,workon
后面但是能够支持用 tab
自动补全的哟。
一样,离开虚拟环境,可使用。
deactivate
另外,删除虚拟环境也同样简单。
rmvirtualenv spider
到这里,virtualenv
和 virtualenvwrapper
的基本使用就介绍完了,须要了解更多用法,能够参考官方文档哟。但愿这两个工具可以帮助小伙伴们在工做中提升效率哟~~