Linux集群之美
上QQ阅读APP看书,第一时间看更新

2.4.2 利用virtualenv隔离项目

Python的第三方包成千上万,在一个Python环境下开发时间越久、安装的依赖越多,就越容易出现依赖包冲突的问题。为了解决这个问题,开发者们开发出了virtualenv,来搭建虚拟且独立的Python环境。这样就可以使每个项目环境与其他项目独立开来,保持环境的干净,解决包冲突问题。virtualenv的作用简单总结就是:为某个应用提供了隔离的Python运行环境,解决不同应用间多版本的冲突问题。

Mac系统下安装pip的方法较为简单,直接使用sudo pip install virtualenv安装即可。

笔者的工作目录在/Users/yuhongchun/data下,首先建立一个名为myenvpy的目录,然后创建一个独立的Python虚拟环境,命名为sandbox,命令如下:


virtualenv --no-site-packages venv

命令执行结果如下:


New python executable in /Users/yuhongchun/data/myenvpy/venv/bin/python
Installing setuptools, pip, wheel...
done.

进入sandbox目录,发现里面多了如下三个目录:


bin  include  lib

激活该环境比较简单,命令如下:


source bin/active

命令显示结果如下:


(sandbox) [yuhongchun@yuhongchundeMacBook-Pro sandbox]$

此结果表明已经进入了sandbox虚拟环境,查看Python版本:


Python 2.7.10

我们要在此环境下部署应用,例如安装IPython和requests第三方类库,命令如下:


pip install -i http://pypi.douban.com/simple  --trusted-host=pypi.douban.com ipython==5.4.0 ansible==1.9.6

注意

Python 2.7不支持高版本的IPython,所以这里必须指定版本。

然后查看pip的库资源,命令如下:


pip freeze >requirements.txt

requirements.txt文件的内容如下:


ipython==5.4.0
ipython-genutils==0.2.0
Jinja2==2.10.1
MarkupSafe==1.1.1
paramiko==2.6.0
pathlib2==2.3.4
pexpect==4.7.0
pickleshare==0.7.5
prompt-toolkit==1.0.16
ptyprocess==0.6.0
pycparser==2.19
pycrypto==2.6.1
Pygments==2.4.2
PyNaCl==1.3.0
PyYAML==5.1.2
scandir==1.10.0
selenium==3.8.1
simplegeneric==0.8.1
six==1.12.0
traitlets==4.3.2
wcwidth==0.1.7

退出此环境的方法也很简单,直接输入deactivate命令,命令显示结果如下:


deactivate

正常情况下会显示如下终端符:


[yuhongchun@yuhongchundeMacBook-Pro sandbox]$