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