使用virtualenv与virtualenvwrapper

Published: 2015-10-14

Tags: Python

virtualenv

virtualenv就是一个隔离的环境,这个虚拟环境包含了最简单的一些包,你可以使用这个虚拟环境来运行你的程序,并且在虚拟环境下安装的个各种包只作用于环境之内,不会影响系统的各种依赖,如果不需要这个虚拟环境了,rm -rf删除即可,使用它可以构建一个整洁且一致的线上环境

安装

$ pip install virtualenv

之后进入你的项目目录

$ cd my_project_folder
$ virtualenv venv

在目录中会出现一个名为venv的文件夹,这就是一个环境

进入环境

$ source venv/bin/activate

这时,你的终端提示符看起来是这样的(venv)Your-Computer:your_project UserName$)

现在你可以运行你的程序,如果还没有,不如就运行如下的代码吧

#!/bin/env python
#encoding:utf-8
from bs4 import BeautifulSoup
import requests

print "hello virtualenv"

在新的环境中运行肯定不会成功,因为会提示没有bs4

像往常一样安装

pip install beautifulsoup4
pip install requests

现在就可以正常安装了

Note:

  • 可以使用 pip freeze > requirements.txt 来导出依赖包,在其它系统部署直接使用 pip install -r requirements.txt 安装就可以了
  • 如果你的程序受到版本控制,请将环境文件夹排除在外

退出环境,只需键入 deactivate 即可

(venv) $ deactivate

virtualenvwrapper

virtualenv 解决了依赖和环境一致性的问题,可是还有一个小问题,就是我们可能在很多地方都创建了环境,导致我们找不到它们,也不记得他们叫什么名字

virtualenvwrapper可以帮助我们解决这个问题

新建一个~/Envs文件夹来保存环境,新建一个~/PyProjects来保存项目

$ mkdir ~/Envs
$ mkdir ~/PyProjects

安装virtualenvwrapper及配置

$ pip install virtualenvwrapper

$ export WORKON_HOME=~/Envs
$ export PROJECT_HOME=~/PyProjects

$ source /usr/local/bin/virtualenvwrapper.sh   # Debian / Ubuntu 
$ source /usr/bin/virtualenvwrapper.sh   # Centos / Fedora

使用

创建一个新的环境,你可以在~/Envs找到它,创建完成会自动进入环境

$ mkvirtualenv venv

创建一个新的项目,你可以在~/PyProjects找到它

$ mkproject myproject

使用workon可以切换工作环境

$ workon venv

使用 deactivate 退出环境, 使用 rmvirtualenv 删除环境

$ rmvirtualenv venv

使用 lsvirtualenv 列出所有环境

$ lsvirtualenv

详细介绍请看:http://docs.python-guide.org/en/latest/dev/virtualenvs/