【翻译】http://virtualenv.readthedocs.org/en/latest/index.html html
virtualenv是建立独立python环境的一种工具。python
环境搭建的过程当中,有一个基本的问题就是关于某个引用项、版本,以及间接权限的问题。试想,若是你有一个应用须要某个版本1的库文件,但另外一个应用须要版本2,那怎么使用这两个应用?把全部的库文件都安装到/usr/lib/python2.7/site-packages(或者任何你的平台的默认位置),会很容易使得本来不想升级的应用被升级。bootstrap
或者说,要是你想安装一个应用并使之保持原样,该怎么办?若是当前的应用工做正常,任何对它的库文件或者版本的变动均可能对这个应用形成破坏。服务器
同时,要是你不能把安装包放在全局的site-packages目录怎么办?好比说,在一个共享服务器上。app
全部的这些状况,virtualenv都能帮到你。它可以建立一个包含本身安装路径的环境。这个环境下不与其余的虚拟环境共享库文件(也能够不访问安装的全局库文件)。python2.7
相同类型的工具还有workingenv(不建议使用,virtualenv的早期版本),virtual-python(也是virtualenv的早期版本,不适用Windows),zc.buildout等。工具
# Here's a more concrete example of how you could use this import virtualenv, textwrap output = virtualenv.create_bootstrap_script(textwrap.dedent(""" import os, subprocess def after_install(options, home_dir): etc = join(home_dir, 'etc') if not os.path.exists(etc): os.makedirs(etc) subprocess.call([join(home_dir, 'bin', 'easy_install'), 'BlogApplication']) subprocess.call([join(home_dir, 'bin', 'paster'), 'make-config', 'BlogApplication', join(etc, 'blog.ini')]) subprocess.call([join(home_dir, 'bin', 'paster'), 'setup-app', join(etc, 'blog.ini')]) """)) f = open('blog-bootstrap.py', 'w').write(output)
强烈建议任何应用的开发或部署都采用这类工具。ui