上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]$