使用virtualenv搭建獨立的Python環境
virtualenv可以搭建虛擬且獨立的python環境,可以使每個項目環境與其他項目獨立開來,保持環境的幹凈,解決包沖突問題。
一、安裝virtualenv
virtualenv實際上是一個python包,所以我們可以用easy_install或者pip安裝。下面介紹在CentOS系統上的安裝方法。
easy_install安裝方式:
1 2 |
[root@localhost ~] # yum install python-setuptools python-devel
[root@localhost ~] # easy_install virtualenv
|
pip安裝方式:
1 2 |
[root@localhost ~] # easy_install pip
[root@localhost ~] # pip install virtualenv
|
yum安裝方式(epel源):
1 |
[root@localhost ~] # yum install python-virtualenv
|
二、創建python虛擬環境
使用virtualenv命令創建python虛擬環境:virtualenv [虛擬環境名稱]。
1 2 3 |
[root@localhost ~] # virtualenv env1
New python executable in env1 /bin/python
Installing setuptools, pip... done .
|
執行後,在本地會生成一個與虛擬環境同名的文件夾。
如果你的系統裏安裝有不同版本的python,可以使用--python參數指定虛擬環境的python版本:
1 2 3 4 5 |
[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。
1 2 3 |
[root@localhost ~] # virtualenv --system-site-packages env1
New python executable in env1 /bin/python
Installing setuptools, pip... done .
|
三、啟動虛擬環境
進入虛擬環境目錄,啟動虛擬環境,如下:
1 2 3 4 |
[root@localhost ~] # cd env1/
[root@localhost env1] # source bin/activate
(env1)[root@localhost env1] # python -V
Python 2.7.8
|
此時命令行前面會多出一個括號,括號裏為虛擬環境的名稱。以後easy_install或者pip安裝的所有模塊都會安裝到該虛擬環境目錄裏。
四、退出虛擬環境
退出虛擬環境:deactivate
1 2 |
(env1)[root@localhost env1] # deactivate
[root@localhost env1] #
|
五、使用virtualenvwrapper
virtualenvwrapper是virtualenv的擴展工具,可以方便的創建、刪除、復制、切換不同的虛擬環境。
1.安裝virtualenvwrapper
1 |
[root@localhost ~] # easy_install virtualenvwrapper
|
或者:
1 |
[root@localhost ~] # pip install virtualenvwrapper
|
創建一個文件夾,用於存放所有的虛擬環境:
1 |
[root@localhost ~] # mkdir ~/workspaces
|
設置環境變量,把下面兩行添加到~/.bashrc裏。
1 2 |
[root@localhost ~] # export WORKON_HOME=~/workspaces
[root@localhost ~] # source /usr/bin/virtualenvwrapper.sh
|
然後就可以使用virtualenvwrapper了。
2.創建虛擬環境:mkvirtualenv [虛擬環境名稱]
1 2 3 4 5 6 7 |
[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裏。
3.列出虛擬環境:lsvirtualenv -b
1 2 3 |
(env2)[root@localhost ~] # lsvirtualenv -b
env1
env2
|
4.切換虛擬環境:workon [虛擬環境名稱]
1 2 3 |
(env2)[root@localhost ~] # workon env1
(env1)[root@localhost ~] # echo $VIRTUAL_ENV
/root/workspaces/env1
|
5.查看環境裏安裝了哪些包:lssitepackages
6.進入當前環境的目錄:cdvirtualenv [子目錄名]
1 2 3 4 5 6 |
(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 [子目錄名]
1 2 3 4 5 6 |
(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
|
7.控制環境是否使用global site-packages:toggleglobalsitepackages
8.復制虛擬環境:cpvirtualenv [source] [dest]
1 2 3 |
[root@localhost ~] # cpvirtualenv env1 env3
Copying env1 as env3...
(env3)[root@localhost ~] #
|
9.退出虛擬環境:deactivate
10.刪除虛擬環境:rmvirtualenv [虛擬環境名稱]
1 2 |
[root@localhost ~] # rmvirtualenv env2
Removing env2...
|
使用virtualenv搭建獨立的Python環境