virtualenv能夠搭建虛擬且獨立的python環境,可使每一個項目環境與其餘項目獨立開來,保持環境的乾淨,解決包衝突問題。python
virtualenv其實是一個python包,因此咱們能夠用easy_install或者pip安裝。下面介紹在CentOS系統上的安裝方法。windows
使用easy_install安裝方式:bash
[root@localhost ~]# yum install python-setuptools python-devel [root@localhost ~]# easy_install virtualenv
使用pip安裝方式:app
[root@localhost ~]# easy_install pip [root@localhost ~]# pip install virtualenv
使用yum安裝方式:python2.7
[root@localhost ~]# yum install python-virtualenv
使用virtualenv命令建立python虛擬環境:virtualenv [虛擬環境名稱]工具
[root@localhost ~]# virtualenv env1 New python executable in env1/bin/python Installing setuptools, pip...done.
執行後,在本地會生成一個與虛擬環境同名的文件夾。
若是你的系統裏安裝有不一樣版本的python,可使用--python參數指定虛擬環境的python版本:spa
[root@localhost ~]# virtualenv --python=/usr/local/python-2.7.8/bin/python2.7 env1 Running virtualenv with interpreter /usr/local/python-2.7.8/bin/python2.7 New python executable in env1/bin/python2.7 Also creating executable in env1/bin/python Installing setuptools, pip...done.
實測默認狀況下虛擬環境不會依賴系統環境的global site-packages。好比系統環境裏安裝了MySQLdb模塊,在虛擬環境裏import MySQLdb會提示ImportError。若是想依賴系統環境的第三方軟件包,可使用參數--system-site-packages。此外,也可以使用virtualenvwrapper的toggleglobalsitepackages命令控制當前環境是否使用global site-packages。命令行
[root@localhost ~]# virtualenv --system-site-packages env1 New python executable in env1/bin/python Installing setuptools, pip...done.
進入虛擬環境目錄,啓動虛擬環境,以下:3d
[root@localhost ~]# cd env1/ [root@localhost env1]# source bin/activate (env1)[root@localhost env1]# python -V Python 2.7.8
此時命令行前面會多出一個括號,括號裏爲虛擬環境的名稱。之後easy_install或者pip安裝的全部模塊都會安裝到該虛擬環境目錄裏。blog
退出虛擬環境:deactivate
(env1)[root@localhost env1]# deactivate [root@localhost env1]#
virtualenvwrapper是virtualenv的擴展工具,能夠方便的建立、刪除、複製、切換不一樣的虛擬環境。
[root@localhost ~]# easy_install virtualenvwrapper 或者: [root@localhost ~]# pip install virtualenvwrapper
注意:這裏不是在虛擬環境中操做的。
建立一個文件夾,用於存放全部的虛擬環境:
[root@localhost ~]# mkdir ~/workspaces
設置環境變量,把下面兩行添加到~/.bashrc裏。
[root@localhost ~]# export WORKON_HOME=~/workspaces [root@localhost ~]# source /usr/local/bin/virtualenvwrapper.sh
而後就可使用virtualenvwrapper了。2.建立虛擬環境:mkvirtualenv [虛擬環境名稱]
[root@localhost ~]# mkvirtualenv env1 New python executable in env1/bin/python Installing setuptools, pip...done. (env1)[root@localhost ~]# mkvirtualenv env2 New python executable in env2/bin/python Installing setuptools, pip...done. (env2)[root@localhost ~]#
注意:mkvirtualenv可使用virtualenv的參數,好比--python來指定python版本。建立虛擬環境後,會自動切換到此虛擬環境裏。虛擬環境目錄都在WORKON_HOME裏。
(env2)[root@localhost ~]# lsvirtualenv -b env1 env2
(env2)[root@localhost ~]# workon env1 (env1)[root@localhost ~]# echo $VIRTUAL_ENV /root/workspaces/env1
(env2)[root@localhost ~]# lssitepackages easy_install.py pip pkg_resources.py setuptools _markerlib pip-1.5.4.dist-info __pycache__ setuptools-2.2.dist-info
(env1)[root@localhost ~]# cdvirtualenv (env1)[root@localhost env1]# pwd /root/workspaces/env1 (env1)[root@localhost env1]# cdvirtualenv bin (env1)[root@localhost bin]# pwd /root/workspaces/env1/bin
進入當前環境的site-packages目錄:cdsitepackages [子目錄名]
(env1)[root@localhost env1]# cdsitepackages (env1)[root@localhost site-packages]# pwd /root/workspaces/env1/lib/python2.6/site-packages (env1)[root@localhost site-packages]# cdsitepackages pip (env1)[root@localhost pip]# pwd /root/workspaces/env1/lib/python2.6/site-packages/pip
[root@localhost ~]# cpvirtualenv env1 env3 Copying env1 as env3... (env3)[root@localhost ~]#
[root@localhost ~]# rmvirtualenv env2 Removing env2...
從這張圖中能夠看出,相似windows的exe程序,其實python2.七、python3.4和python3.4m是可執行文件。因此只要把/usr/bin這個加入到環境變量path中,在任何目錄下都可以執行這個三個可執行程序,運行不一樣版本的python。
爲了簡單,爲這三個可執行程序分別生成了軟連接。若是刪除了如今的python軟連接,從新創建一個軟連接,並讓其指向python3.4,那麼在終端運行python命令就會啓動python3.4的可執行程序。
這裏有一個問題:
在創建virtualenv的時候,經過--python執行虛擬環境的python的版本,在虛擬環境的目錄下能看到上面相似的東西,可是經過which python命令看到的確實系統的/usr/bin目錄下的python。