由于Python的版本众多,还有Python2和Python3的争论,因此有些软件包或第三方库就容易出现版本不兼容的问题。
通过 virtualenv
这个工具,就可以构建一系列 虚拟的Python环境
,然后在每个环境中安装需要的软件包(配合 pip
使用),这一系列的环境是相互隔离的。作为一个独立的环境就不容易出现版本问题,还方便部署。
Github: https://github.com/pypa/virtualenvDoc: https://virtualenv.pypa.io/en/latest/
$ sudo pip install virtualenv
$ virtualenv venv
为环境指定Python解释器:
$ virtualenv -p /usr/bin/python2.7 venv
$ source venv/bin/activate
$ deactivate
直接删除目录即可.
为了使用virtualenv更方便,可以借助 virtualenvwrapper
$ sudo pip install virtualenvwrapper
$ source /usr/local/bin/virtualenvwrapper.sh
默认创建的虚拟环境位于 ~/.virtualenvs
,可以通过环境变量 $WORKON_HOME
来定制。
$ mkvirtualenv test2-env
创建后,会自动激活环境,注意看Shell提示符的改变:
(test2-env)CL-USER> test2-env$
$ lsvirtualenv
$ workon test2-env
$ cdvirtualenv
$ cdsitepackages
$ lssitepackages
$ deactivate
$ rmvirtualenv test2-env
所谓 冻结(freeze)
环境,就是将当前环境的软件包等固定下来:
$ pip freeze > requirements.txt$ cat requirements.txtCherryPy==3.6.0Jinja2==2.7.3Markdoc==0.6.6Markdown==2.5.1MarkupSafe==0.23PyYAML==3.11Pygments==2.0.1WebOb==1.4argparse==1.2.1wsgiref==0.1.2
重建(rebuild)
环境就是在部署的时候,在生产环境安装好对应版本的软件包,不要出现版本兼容等问题:
$ pip install -r requirements.txt
配合pip,可以批量安装对应版本的软件包,快速重建环境,完成部署。
virtualenv
是一个很棒的工具,和 pip
都被称为神器,还可以进行功能定制,比如在创建环境后自动做一些其他事情,现在就不细究了。
作者简介:
朱春来(Leslie Zhu),金融工程师,毕业于西安电子科技大学, 喜欢历史,喜欢编程. 日常在GNU/Linux环境下进行C/C++、Python开发,对Common Lisp、Node.js、金融等感兴趣。可以通过邮箱(pythonisland@gmail.com)联系他,或者直接在他的个人主页上留言.
访问朱春来(Leslie Zhu)的个人主页(http://lesliezhu.github.com)