Virtualenv介紹

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

相關文章
相關標籤/搜索