Win10下解決Python2和Python3的兼容,同時解決pip的速度問題

Part1:解決Python2和Python3的同時使用問題,并且優(yōu)先使用python2

因為歷史原因,工作中要使用Python2的不在少數(shù)。比如有些工具是使用python2編寫的,甚至是源碼也沒有。改寫這部分工具費時,也不值得。

但是,python之父Guido van Rossum(吉多·范羅·蘇姆),早就提出2020年1月1日之后不在支持更新。這個時候,又需要工作中使用的是python3?,F(xiàn)在在執(zhí)行的python2的pip安裝時,都有明顯提示。

python2.7 2020年一月1日過期

天生的矛盾解決不好,會給初級使用者帶來麻煩。本文主要解決這方面的問題。

本文基于這樣的假設:

1.??? 使用python2作為默認python。保證兼容。

2.??? 同時使用python3,開發(fā)現(xiàn)有應用和腳本。在現(xiàn)有腳本中兼容python2或者直接放棄對python2的支持。

具體步驟:

1.??下載安裝包

下載路徑www.python.org->download->Viewthe full list of downloads.下載Python2.7最新版本和python3.6最新版本。(我們沒有必要跟著3.7走,有些庫還在兼容中。)


下載內(nèi)容選擇Windows x86-64 MSI installer,MSI可以直接安裝。64位,是因為操作系統(tǒng)時支持64位的,如圖:

得到兩個MSI的安裝包。


2.??安裝在D盤

將python2安裝在D盤,如圖:(python3類似。)



3.??編輯環(huán)境變量,并修改python3中文件

個人或者系統(tǒng)的環(huán)境變量將python2的位置放在前面,python3的位置放在后面。右擊“我的電腦”,選擇屬性后如圖設置:


配置環(huán)境變量

將python3的python.exe pip.exe修改為python3.exe和pip3.exe,確保命令行中用到的python和pip只可能是python2的版本(這樣修改后,和環(huán)境變量的先后沒有關系了。根本就不存在python3的python.exe和pip.exe文件)

同時需要修改pip3.exe中的python解析器的位置,為更改后的d:\python36\python3.exe。(重要!不然在這個目錄下執(zhí)行pip3.exe會找不到python.exe。)

修改pip3.exe中的解析器位置


python3的scripts中只有pip3.exe沒有pip.exe


python3中只有python3.exe 沒有python.exe

4.? 最后確認命令行解析正確


?

使用where命令確認位置。


總結:

通過上面的修改,win10系統(tǒng)會使用python2作為默認python。

同時python3也順利安裝在系統(tǒng)中了,可以通過使用python3 xxx.py和pip3 install xxx 操作python3解析器。

Part2: 解決安裝速度問題

Pip 指定國內(nèi)的數(shù)據(jù)源,提升下載安裝速度。國內(nèi)有兩個主要的源,一個是清華的,一個是豆瓣的。

使用方式也有兩種,一種是臨時使用,一種是永久使用。

1.臨時使用:

可以在使用pip的時候在后面加上-i參數(shù),指定pip源,這里臨時使用清華的源。例如: pip install scrapy -i?https://pypi.tuna.tsinghua.edu.cn/simple


使用清華的源安裝爬蟲


2.永久修改:

Win10機器:

在自己的主目錄下建立一個pip目錄中間放置一個pip.ini文件內(nèi)容如下:

[global]

trusted-host = ?pypi.douban.com

index-url = https://pypi.douban.com/simple


編輯配置pip默認配置文件

#建議使用豆瓣的源,url寫上https,加密傳輸。

3.對比一下效果:

在我們配置完成pip.ini之后,我們使用pip install的方式安裝包,默認就是到豆瓣的連接去下載安裝。


不用-i 指定,使用豆瓣的源

Part3:判斷當前運行的解析器是否是python3

通過上面的修改,經(jīng)常會錯誤的將需要python3解析器解析的腳本用python2解析器執(zhí)行了。

Python的sys包中version屬性,指明了運行該腳本的當前解析器版本。我們可以例用這個特點,發(fā)現(xiàn)調(diào)用的解析器錯了,提示用戶。

1.sys.version=>'2.7.15 (v2.7.15:ca079a3ea3, Apr 30 2018, 16:30:26)[MSC v.1500 64 bit (AMD64)]'

2.1如果發(fā)現(xiàn)是python2的可以直接調(diào)用exit()退出。

2.2通過six包或者其他方式,代碼上兼容python2。(不建議,python2以后會越來越少。)

?

使用sys.version中判斷當前解析器的版本


提示用戶當前解析器是python2


使用python3 正常工作
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容