天天看點

使用virtualenv搭建獨立的Python環境

 virtualenv可以搭建虛拟且獨立的python環境,可以使每個項目環境與其他項目獨立開來,保持環境的幹淨,解決包沖突問題。

一、安裝virtualenv

    virtualenv實際上是一個python包,是以我們可以用easy_install或者pip安裝。下面介紹在CentOS系統上的安裝方法。

    easy_install安裝方式:

<code>[root@localhost ~]</code><code># yum install python-setuptools python-devel</code>

<code>[root@localhost ~]</code><code># easy_install virtualenv</code>

    pip安裝方式:

<code>[root@localhost ~]</code><code># easy_install pip</code>

<code>[root@localhost ~]</code><code># pip install virtualenv</code>

    yum安裝方式(epel源):

<code>[root@localhost ~]</code><code># yum install python-virtualenv</code>

二、建立python虛拟環境

    使用virtualenv指令建立python虛拟環境:virtualenv [虛拟環境名稱]。

<code>[root@localhost ~]</code><code># virtualenv env1</code>

<code>New python executable </code><code>in</code> <code>env1</code><code>/bin/python</code>

<code>Installing setuptools, pip...</code><code>done</code><code>.</code>

    執行後,在本地會生成一個與虛拟環境同名的檔案夾。

    如果你的系統裡安裝有不同版本的python,可以使用--python參數指定虛拟環境的python版本:

<code>[root@localhost ~]</code><code># virtualenv --python=/usr/local/python-2.7.8/bin/python2.7 env1</code>

<code>Running virtualenv with interpreter </code><code>/usr/local/python-2</code><code>.7.8</code><code>/bin/python2</code><code>.7</code>

<code>New python executable </code><code>in</code> <code>env1</code><code>/bin/python2</code><code>.7</code>

<code>Also creating executable </code><code>in</code> <code>env1</code><code>/bin/python</code>

    實測預設情況下虛拟環境不會依賴系統環境的global site-packages。比如系統環境裡安裝了MySQLdb子產品,在虛拟環境裡import MySQLdb會提示ImportError。如果想依賴系統環境的第三方軟體包,可以使用參數--system-site-packages。此外,也可使用virtualenvwrapper的toggleglobalsitepackages指令控制目前環境是否使用global site-packages。

<code>[root@localhost ~]</code><code># virtualenv --system-site-packages env1</code>

三、啟動虛拟環境

    進入虛拟環境目錄,啟動虛拟環境,如下:

<code>[root@localhost ~]</code><code># cd env1/</code>

<code>[root@localhost env1]</code><code># source bin/activate</code>

<code>(env1)[root@localhost env1]</code><code># python -V</code>

<code>Python 2.7.8</code>

    此時指令行前面會多出一個括号,括号裡為虛拟環境的名稱。以後easy_install或者pip安裝的所有子產品都會安裝到該虛拟環境目錄裡。

四、退出虛拟環境

    退出虛拟環境:deactivate

<code>(env1)[root@localhost env1]</code><code># deactivate</code>

<code>[root@localhost env1]</code><code>#</code>

五、使用virtualenvwrapper

    virtualenvwrapper是virtualenv的擴充工具,可以友善的建立、删除、複制、切換不同的虛拟環境。

    1.安裝virtualenvwrapper

<code>[root@localhost ~]</code><code># easy_install virtualenvwrapper</code>

    或者:

<code>[root@localhost ~]</code><code># pip install virtualenvwrapper</code>

    建立一個檔案夾,用于存放所有的虛拟環境:

<code>[root@localhost ~]</code><code># mkdir ~/workspaces</code>

    設定環境變量,把下面兩行添加到~/.bashrc裡。

<code>[root@localhost ~]</code><code># export WORKON_HOME=~/workspaces</code>

<code>[root@localhost ~]</code><code># source /usr/bin/virtualenvwrapper.sh</code>

    然後就可以使用virtualenvwrapper了。

    2.建立虛拟環境:mkvirtualenv [虛拟環境名稱]

<code>[root@localhost ~]</code><code># mkvirtualenv env1</code>

<code>(env1)[root@localhost ~]</code><code># mkvirtualenv env2</code>

<code>New python executable </code><code>in</code> <code>env2</code><code>/bin/python</code>

<code>(env2)[root@localhost ~]</code><code>#</code>

    注意:mkvirtualenv可以使用virtualenv的參數,比如--python來指定python版本。建立虛拟環境後,會自動切換到此虛拟環境裡。虛拟環境目錄都在WORKON_HOME裡。

    3.列出虛拟環境:lsvirtualenv -b

<code>(env2)[root@localhost ~]</code><code># lsvirtualenv -b</code>

<code>env1</code>

<code>env2</code>

    4.切換虛拟環境:workon [虛拟環境名稱]

<code>(env2)[root@localhost ~]</code><code># workon env1</code>

<code>(env1)[root@localhost ~]</code><code># echo $VIRTUAL_ENV</code>

<code>/root/workspaces/env1</code>

    5.檢視環境裡安裝了哪些包:lssitepackages

    6.進入目前環境的目錄:cdvirtualenv [子目錄名]

<code>(env1)[root@localhost ~]</code><code># cdvirtualenv</code>

<code>(env1)[root@localhost env1]</code><code># pwd</code>

<code>(env1)[root@localhost env1]</code><code># cdvirtualenv bin</code>

<code>(env1)[root@localhost bin]</code><code># pwd</code>

<code>/root/workspaces/env1/bin</code>

    進入目前環境的site-packages目錄:cdsitepackages [子目錄名]

<code>(env1)[root@localhost env1]</code><code># cdsitepackages</code>

<code>(env1)[root@localhost site-packages]</code><code># pwd</code>

<code>/root/workspaces/env1/lib/python2</code><code>.6</code><code>/site-packages</code>

<code>(env1)[root@localhost site-packages]</code><code># cdsitepackages pip</code>

<code>(env1)[root@localhost pip]</code><code># pwd</code>

<code>/root/workspaces/env1/lib/python2</code><code>.6</code><code>/site-packages/pip</code>

    7.控制環境是否使用global site-packages:toggleglobalsitepackages

    8.複制虛拟環境:cpvirtualenv [source] [dest]

<code>[root@localhost ~]</code><code># cpvirtualenv env1 env3</code>

<code>Copying env1 as env3...</code>

<code>(env3)[root@localhost ~]</code><code>#</code>

    9.退出虛拟環境:deactivate

    10.删除虛拟環境:rmvirtualenv [虛拟環境名稱]

<code>[root@localhost ~]</code><code># rmvirtualenv env2</code>

<code>Removing env2...</code>

本文轉自 張斌_青島 51CTO部落格,原文連結:http://blog.51cto.com/qicheng0211/1561685