【Windows】【Python】同時使用python2、python3 環境設定方式

(更新)
可以透過在安裝python3時附加的py檔案 (路徑 C:\Windows\py.exe) 
帶版本參數,做到一樣的事情
py -2
py -3

要指定pip版本時,再加個 -m pip
py -2 -m pip
py -3 -m pip








同時使用python2、python3 環境


目前有些舊東西要用到python2、絕大部分東西都要用到python3的情況下
所以電腦中必須存在兩個大版本差異的python

此時我會希望在Windows的CMD中
輸入 python2 時使用 python2
輸入 python、python3 時都能導向到 python3

希望在安裝套件時,
輸入 pip2 時安裝到 python2環境
輸入 pip、pip3 時安裝到 python3環境







安裝好python2、python3後,找到他們的安裝路徑

python的預設安裝路徑:

全域(給All User)路徑在 C:\ 底下
ex: C:\Python27

區域(給目前User)路徑在 C:\Users\GJLMoTea\AppData\Local\Programs\Python 底下 
ex: C:\Users\GJLMoTea\AppData\Local\Programs\Python\Python39 
這很長,每次都記不住位置




設定系統環境變數





關於環境變數

設定環境變數PATH的目的,
是為了讓電腦知道,當使用者在CMD下了python的指令後,
系統會到這個路徑底下尋找 python.exe 來執行






環境變數順序

環境變數PATH分成兩個區塊:個人的使用者變數系統變數

對於環境變數來說,找尋的順序是這樣的:
電腦會先從系統大範圍設定按上至下找
在系統大範圍中找不到,再去找個人小設定按上至下找
也就是說,當一找到就符合的選項就返回,後面的即使符合也不會被電腦繼續往下找

所以設定是吃第一個符合的





也就代表橘框的優先性 > 綠框


了解python安裝路徑、以及吃設定的優先順序後,再來往下執行複製、調整環境變數




複製執行檔檔案

python3資料夾底下,把 python.exe 複製 取名為python3.exe


pip套件Script資料夾底下
點擊Script進來,也確認有pip.exepip3.exe兩份


python2資料夾也同樣操作python2.exe、python.exe


pip2.exe、pip.exe






調整環境變數

由於上面提到的環境變數運作邏輯

因為系統中有兩個Path
只要在 使用者變數Path 系統變數Path 任一地方中(並確保另一個Path中 沒有Python路徑)
依照上面是python3下面是python2的方式去放python資料夾及Script資料夾位置



這樣就能解決啦

設定完成後,記得重新打開CMD才會生效

-v 來確認一下版本

> python -v
> pip -v


都是對的~


另外在過程中我有遇到一些問題
是在Windows市集中安裝的Python,後來我把他移除沒再用到(卻沒完全移除乾淨)
這部分放在文章最底部







當然,題外話
因為在安裝Python時就能選擇是否安裝 for All User(全域) 或者 current User(區域)
比較好的方式是
C:\python27 放在系統變數
C:\Users\GJLMoTea\AppData\Local\Programs\Python\Python39  放在個人使用者變數
才是更符合兩者的設計的

可是這樣放 沒辦法達到我一開始想要的預設順序
因為python2的層級比python3來的高
變成呼叫python時會先吃到 C:\python27 
而不是 C:\Users\GJLMoTea\AppData\Local\Programs\Python\Python39

啊我也懶得重新安裝python3(for All User)







確認python順序

可以透過where 指令來確認CMD呼叫到的路徑及順序

> where python




赫然發現在中間有一個  不是我要的WindowsApps的Python

當然也在環境變數中




開啟路徑後,點開 WindowsApps底下的Python 

看來是之前在Windows 應用程式(市集)上面安裝、卻沒使用到,後來移除了
卻沒刪除乾淨



就果斷的把python.exe跟python3.exe移除
但要移除時發現刪不掉,有其他的應用程式占用


把應用程式都關閉後,仍然無法刪除

因為在Microsoft WindowsApps底下,這是普通的方法無法刪除的
錯誤 0x80070780



首先以管理者身分開啟CMD,用指令force方式刪除



cd C:\Users\自己的USER\AppData\Local\Microsoft\WindowsApps

del /f python.exe
del /f python3.exe

最後成功移除、皆大歡喜了


 

沒有留言:

張貼留言