我们在360如何使用Python – virtualenv 篇

这个系列的前面一部分,我们简单介绍了我们的项目的基本结构和开发流程。整个开发流程都是基于 distribute 的。关于我们如何使用distribute,会在后面一部分当中介绍。基于 distribute,我们具有了从代码构建到发布,测试和部署的基本框架。但是在实际的开发当中,我们还有一些问题需要解决,最重要的一点就是开发和运行环境的隔离和低权限。

所谓环境的隔离,是指在同一台机器上,能够并行(side-by-side)地部署多个python环境,每个环境之间互相独立,拥有自己的python程序,库和可执行程序。这样,我们既可以在一台机器上为多名开发者提供互不影响的开发环境,也能在同一台服务器上为多个应用提供互不影响的执行环境。同时,为了能够让多名开发者或多个应用实现真正意义上的隔离,还需要让每个环境能够在各自的非root且不能sudo的用户手里进行管理,包括升级包,安装新的包等等,否则需要为每个人都提供sudo权限,会破坏隔离性。

一个直觉的解决方案是在机器上安装为每个人安装一个python,彼此在不同的目录当中,每个目录只授权给对应的人员权限。但这种方案会导致大量的冗余的文件,比如python的标准库,就需要每个安装的目录里面一份。而且如果我们需要做小版本升级(比如将 python 2.7.2 升级到 python 2.7.3)的时候,需要