Python2及Python3如何實(shí)現(xiàn)兼容切換
由于歷史原因,Python有兩個(gè)大的版本分支,Python2和Python3,又由于一些庫(kù)只支持某個(gè)版本分支,所以需要在電腦上同時(shí)安裝Python2和Python3,因此如何讓兩個(gè)版本的Python兼容,如何讓腳本在對(duì)應(yīng)的Python版本上運(yùn)行,這個(gè)是值得總結(jié)的。
對(duì)于Ubuntu 16.04 LTS版本來說,Python2(2.7.12)和Python3(3.5.2)默認(rèn)同時(shí)安裝,默認(rèn)的python版本是2.7.12。
當(dāng)然你也可以用python2來調(diào)用。
如果想調(diào)用python3,就用python3.
對(duì)于Windows,就有點(diǎn)復(fù)雜了。因?yàn)椴徽損ython2還是python3,python可執(zhí)行文件都叫python.exe,在cmd下輸入python得到的版本號(hào)取決于環(huán)境變量里哪個(gè)版本的python路徑更靠前,畢竟windows是按照順序查找的。比如環(huán)境變量里的順序是這樣的:
那么cmd下的python版本就是2.7.12。
反之,則是python3的版本號(hào)。
這就帶來一個(gè)問題了,如果你想用python2運(yùn)行一個(gè)腳本,一會(huì)你又想用python3運(yùn)行另一個(gè)腳本,你怎么做?來回改環(huán)境變量顯然很麻煩。
網(wǎng)上很多辦法比較簡(jiǎn)單粗暴,把兩個(gè)python.exe改名啊,一個(gè)改成python2.exe,一個(gè)改成python3.exe。這樣做固然可以,但修改可執(zhí)行文件的方式,畢竟不是很好的方法。
我仔細(xì)查找了一些python技術(shù)文檔,發(fā)現(xiàn)另外一個(gè)我覺得比較好的解決辦法。
借用py的一個(gè)參數(shù)來調(diào)用不同版本的Python。py -2調(diào)用python2,py -3調(diào)用的是python3.
當(dāng)python腳本需要python2運(yùn)行時(shí),只需在腳本前加上,然后運(yùn)行py xxx.py即可。
#! python2
當(dāng)python腳本需要python3運(yùn)行時(shí),只需在腳本前加上,,然后運(yùn)行py xxx.py即可。
#! python3
就這么簡(jiǎn)單。
同時(shí),這也完美解決了在pip在python2和python3共存的環(huán)境下報(bào)錯(cuò),提示Fatal error in launcher: Unable to create process using '"'的問題。
當(dāng)需要python2的pip時(shí),只需
py -2 -m pip install xxx
當(dāng)需要python3的pip時(shí),只需
py -3 -m pip install xxx
python2和python3的pip package就這樣可以完美分開了。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 在python3中pyqt5和mayavi不兼容問題的解決方法
- python json.loads兼容單引號(hào)數(shù)據(jù)的方法
- windows下 兼容Python2和Python3的解決方法
- CentOS 7下安裝Python 3.5并與Python2.7兼容并存詳解
- Python中裝飾器兼容加括號(hào)和不加括號(hào)的寫法詳解
- 編寫同時(shí)兼容Python2.x與Python3.x版本的代碼的幾個(gè)示例
- 讓python同時(shí)兼容python2和python3的8個(gè)技巧分享
- Python實(shí)現(xiàn)同時(shí)兼容老版和新版Socket協(xié)議的一個(gè)簡(jiǎn)單WebSocket服務(wù)器
相關(guān)文章
嘗試用最短的Python代碼來實(shí)現(xiàn)服務(wù)器和代理服務(wù)器
"人生苦短、我用Python",Python最大的特點(diǎn)便是代碼簡(jiǎn)潔,得益于Python自帶的wsgiref包和socket模塊,這里我們將嘗試用最短的Python代碼來實(shí)現(xiàn)服務(wù)器和代理服務(wù)器:2016-06-06matplotlib圖例、標(biāo)簽、坐標(biāo)軸刻度的字體設(shè)置方式
這篇文章主要介紹了matplotlib圖例、標(biāo)簽、坐標(biāo)軸刻度的字體設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05Django數(shù)據(jù)庫(kù)(SQlite)基本入門使用教程
django有默認(rèn)自帶的數(shù)據(jù)庫(kù),當(dāng)然也可以用其他的數(shù)據(jù)庫(kù),下面這篇文章主要給大家介紹了關(guān)于Django數(shù)據(jù)庫(kù)(SQlite)基本入門使用教程的相關(guān)資料,需要的朋友可以參考下2022-07-07python+OpenCV人臉識(shí)別考勤系統(tǒng)實(shí)現(xiàn)的詳細(xì)代碼
作為一個(gè)基于人臉識(shí)別算法的考勤系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)教程,以下內(nèi)容將提供詳細(xì)的步驟和代碼示例。本教程將使用 Python 語言和 OpenCV 庫(kù)進(jìn)行實(shí)現(xiàn),需要的朋友可以參考下2023-05-05淺談python函數(shù)之作用域(python3.5)
下面小編就為大家?guī)硪黄獪\談python函數(shù)之作用域(python3.5)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-10-10