【翻譯】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