當(dāng)需要在一個(gè)系統(tǒng)中同時(shí)使用兩個(gè)python版本,可以通過(guò)創(chuàng)建虛擬環(huán)境的方式實(shí)現(xiàn)。鑒于virtualenv不便于對(duì)虛擬環(huán)境集中管理,所以推薦直接使用virtualenvwrapper。 virtualenvwrapper提供了一系列命令使得和虛擬環(huán)境工作變得便利。它把你所有的虛擬環(huán)境都放在一個(gè)地方。
1、查看當(dāng)前系統(tǒng)默認(rèn)python
[root@centos7_kvm01 ~]# python --version
Python 2.7.5
2、查看py2和py3的目錄
以下查詢py3和py2的目錄:
[root@centos7_kvm01 ~]# which python3.7
/usr/local/bin/python3.7
[root@centos7_kvm01 ~]# which python2.7
/usr/bin/python2.7
二、安裝virtualenvwrapper
1、先安裝pip
由于直接yum安裝會(huì)報(bào),找不到包,
需要先安裝擴(kuò)展源EPEL。
EPEL(http://fedoraproject.org/wiki/EPEL) 是由 Fedora 社區(qū)打造,為 RHEL 及衍生發(fā)行版如 CentOS、Scientific Linux 等提供高質(zhì)量軟件包的項(xiàng)目。
首先安裝epel擴(kuò)展源:
sudo yum -yinstallepel-release
然后再安裝pip。yum install python-pip
安裝完成后,會(huì)提示升級(jí)pip:
pip install --upgrade pip
2、安裝virtualenvwrapper
pip install virtualenvwrapper
pip install virtualenvwrapper-win #Windows使用該命令
上述工具裝好后,需要執(zhí)行以下環(huán)境變量設(shè)置。
3、創(chuàng)建目錄用來(lái)存放虛擬環(huán)境
mkdir $HOME/.virtualenvs
4、在~/.bashrc中添加行:
export WORKON_HOME=$HOME/.virtualenvs
source /usr/bin/virtualenvwrapper.sh
5、運(yùn)行:
source ~/.bashrc
三、創(chuàng)建python虛擬環(huán)境
當(dāng)你需要使用Python2開(kāi)發(fā)項(xiàng)目時(shí),建立一個(gè)Python2的虛擬環(huán)境:
$ mkvirtualenv -p /usr/bin/python2.7 env27? ?# -p參數(shù)指定Python解釋器程序路徑或者--python=/usr/bin/python2.7
當(dāng)你需要Python3開(kāi)發(fā)時(shí):
$ mkvirtualenv -p /usr/bin/python3.7 env37
然后可以隨時(shí)切換不同的虛擬環(huán)境:
$ workon env27 # 進(jìn)入Python2環(huán)境
$ workon env37 # 進(jìn)入Python3環(huán)境
不僅可以自由切換py2和py3,同一個(gè)版本下還可以配置不同的依賴,pip不同的包,來(lái)適應(yīng)不同項(xiàng)目的需求。
更爽的是,你可以在進(jìn)入虛擬環(huán)境的同時(shí)切換到項(xiàng)目目錄,只需要編輯 $VIRTUAL_ENV/bin/postactivate 這個(gè)文件即可:
$ vim $VIRTUAL_ENV/bin/postactivate #前提是已經(jīng)進(jìn)入對(duì)應(yīng)的虛擬環(huán)境
在文件中添加切換目錄的命令:
cd /path/to/your/project
四、退出虛擬環(huán)境 離開(kāi) deactivate
如果要?jiǎng)?chuàng)建一個(gè)不帶已經(jīng)安裝到系統(tǒng)的中第三方包的環(huán)境,可以加上參數(shù) --no-site-packages,這樣就可以得到一個(gè)不帶任何第三方包的干凈的python運(yùn)行環(huán)境
命令為
virtualenv --no-site-packages myenv
隨后,可以在這個(gè)環(huán)境下安裝各種第三方包,在venv環(huán)境下,用pip安裝的包都會(huì)安裝到這個(gè)venv環(huán)境下,在python環(huán)境中不受影響,也就是說(shuō),這個(gè)venv環(huán)境是針對(duì)myvenv這個(gè)應(yīng)用單獨(dú)創(chuàng)建的,
五、py3.7環(huán)境下安裝 PyMySQL
#workon py3.7
#pip install? PyMySQL
#python
#import pymysql
切換到py2.7,import會(huì)報(bào)錯(cuò),因?yàn)?PyMySQL只安裝在了py3.7環(huán)境中,對(duì)于py2.7是不可見(jiàn)的。