2018年2月26日 星期一

如何讓 Python2 與 Python3 共存

這兩天在為還原更新的 Win10 重新安裝 Python 3 時發現一個問題, 在安裝過程中我有勾選更新 path, 完成後在命令提示字元視窗下 python 指令還是一樣進入之前玩 GAE 時就安裝的 python 2.7 :

C:\Users\Tony>python 
Python 2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:24:40) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.

檢查環境變數沒問題, Python 3 與其 Script 都有在 path 變數裡面, 為何還是以 Python 2 為預設指令呢? 這是因為 Python 2.7 是比較早安裝的, 所以在 path 變數裡 C:\Python27\Scripts\ 與 C:\Python27\ 這兩項是位於 C:\Python36\Scripts\ 與 C:\Python36\ 之前, 當然會先抓到 Python 2 版的指令. 只要兩個順序調換, 讓 C:\Python36\Scripts\ 與 C:\Python36\ 先被抓到就可以了. 更改順序後下 set path 結果如下 :

C:\Users\tony>set path
Path=C:\Python36\Scripts\;C:\Python36\;C:\Program Files (x86)\Intel\iCLS Client\
;C:\Program Files\Intel\iCLS Client\;C:\Windows\system32;C:\Windows;C:\Windows\S
ystem32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\
Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R)
Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Managemen
t Engine Components\IPT;C:\Program Files\Intel\Intel(R) Management Engine Compon
ents\IPT;C:\Program Files (x86)\Java\jdk1.7.0_79\bin;C:\Python27\Scripts\;C:\Pyt
hon27\;
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW

當然直接移除 Python 2 也是可以的, 但由於 Python 2.7 偶而還是會用到, 所以兩者必須共存才行. 這在樹莓派的 Rasbian Linux 下可透過設定以 python2 與 python3 指令分別進入 Pyhton 2 與 Python 3, 但在 Windows 下要怎麼做?

我參考了下面這篇文章, 作者將 Python 3 安裝目錄下的 python.exe 改為 python3.exe, 要進入 Python 3 IDLE 就下 python3 指令 :

Windows上如何同時使用Python2和3

但我認為應該反其道而行, 因為 Python 2.7 我目前較少用, 大都改用 Python 3, 所以我是將 Python 2 安裝目錄下的 python.exe 改成 python2.exe :




重新開啟命令提示字元視窗, 輸入 python2 就會進入 Python 2, 而輸入 python 則進入 Python 3 的 IDLE :

C:\Users\Tony>python2 
Python 2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:24:40) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

C:\Users\Tony>python 
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.

沒有留言:

張貼留言