用法

virtualenv 用来创建隔离的Python环境。

处理python环境的多版本和模块依赖,以及相应的权限是一个很常见的问题。比如,你有个应用使用的是LibFoo V1.0,但另一个应用却要用到LibFoo V2.0。如何处理呢?如果把所有模块都安装到 /usr/lib/python2.7/site-packages (或是你本机python默认的模块安装目录),那你极有可能无意中升级一些不该升级的模块。

更普遍的是,就算你成功安装了某个应用,那么接下来又会怎样?只要它开始运行了,那么只要其所依赖的模块发生任何改动,亦或升级,都可能打断该应用。

这还没完,要是你无法在 site-packages 目录下安装模块呢?比如共享主机。

上述这几种场合都适用 virtualenv 。它会创建一个拥有独立安装目录的python环境,该隔离环境不会与其他virtualenv环境共享模块(可选择是否访问全局库目录)。

一般用法是:

  1. $ python virtualenv.py ENV

在已安装virtualenv的情况下,可以直接运行 virtualenv ENV

该操作会创建 ENV/lib/pythonX.X/site-packages 目录 和 ENV/bin/python ,前者用来存放要安装的模块,后者就是隔离环境的Python解释器。在virtualenv环境下使用此解释器(包括以 #!/path/to/ENV/bin/python 开头的脚本)时,使用的都是隔离环境下的模块。

该操作还在隔离环境下安装了 Setuptoolsdistribute 。要用Distribue取代setuptools的话,只要运行:

  1. $ python virtualenv.py --distribute ENV

设置环境变量 VIRTUALENV_USE_DISTRIBUTE 也能达到同样目的。

新的virtualenv还包含了 pip 包管理器,可以直接用 ENV/bin/pip 安装第三方模块。