1. 程式人生 > 其它 >win11上同時安裝多個版本的python

win11上同時安裝多個版本的python

最近在做車牌識別專案,我的電腦上安裝的python3.8+tensorflow2.x,但是網上的很多專案需要python3.6+tensorflow1.15.2,所以我就開始折騰怎麼在電腦上同時共存多個python版本,在此記錄一下,也希望能幫到其他人

首先先排排雷,我想著裝anaconda來管理python,也搜到了網上的相關文章一步步按著教程來,但是安裝anaconda的時候就會報錯,好不容易ignore錯誤準備使用,發現conda activate base不管用,網上搜了很多很多教程都沒用,shell給出的anaconda init shell(大概就是呼叫init,可能有點出路),呼叫完了沒解決問題,反而是啟動shell的時候一大堆報錯,無奈我只能解除安裝掉anaconda,但是由於沒有activate python,我不能下載anaconda cleanup導致我又解除安裝不乾淨!總之是一把辛酸淚,我只能把檔案解除安裝了,那些登錄檔還有寫到C盤裡的執行檔案我就去不掉了,建議大家不要裝anaconda直接裝所需要版本的python吧。

接下來進入正題
(1)安裝python3.6
我就去python官網選擇合適版本下載的,這個大家應該都能在網上搜到,我貼個網址https://www.python.org/downloads/release/python-368/和圖在這

之後就按步驟安裝就好啦,建議建一個專門的資料夾安裝python3.6,比如我建了一個名為python3.6.8的資料夾安裝在那,並且把環境變數勾選上
(2)安裝完之後開啟powershell使用python會發現有很多報錯
例如我遇到了類似下面的錯誤

點選檢視程式碼
Fatal Python error: Py_Initialize: can't initialize sys standard streams
Traceback (most recent call last):
  File "e:\miniconda3\lib\abc.py", line 64, in <module>
ModuleNotFoundError: No module named '_abc'
 
During handling of the above exception, another exception occurred:
 
Traceback (most recent call last):
  File "e:\miniconda3\lib\io.py", line 52, in <module>
  File "e:\miniconda3\lib\abc.py", line 68, in <module>
  File "e:\miniconda3\lib\_py_abc.py", line 35
    def __new__(mcls, name, bases, namespace, /, **kwargs):
                                              ^
SyntaxError: invalid syntax
解決方法如下: i)檢查環境變數中是否正確添加了安裝的兩個python路徑(有兩個,一個是python,一個是下面的scripts),如下圖所示


ii)添加了環境變數,命令列輸入python還是報錯的話,可能是命名衝突的問題,找不到要執行哪個python,我是把python3.6.8資料夾下的python複製貼上並重命名為python3.exe,同理pythonw.exe也一樣改為pythonw3.exe,這樣子我輸入python3就能進入python3.6.8,輸入python就能進我原來的python3.8了
(3)檢查pip
按照網上其他教程還要改pip,but我發現python3.6.8資料夾下的scripts資料夾竟然沒有pip檔案,我明明在安裝python的時候勾選了要安裝pip,這也是我百思不得其解的地方,嘗試了很多辦法安裝,最終還得官方的方法讓我成功安裝上pip,網址放這兒了https://pip.pypa.io/en/stable/installation/

ps這個get-pip.py可以點進去但是不下載的話可以右擊連結然後另存為就能儲存為py檔案了
(4)修改環境變數
最後就是py get-pip.py安裝pip,它會顯示出一個位置告訴你pip安裝到哪了,我的是安裝到C:\Users\31133\Scripts了,這時候你需要把這個安裝pip的地址也新增到環境變數PATH中,同時將三個pip複製到C:\Users\31133\python3.6.8\Scripts下面,也就是你安裝python沒有pip的資料夾下

然後你就能順利使用python3.6了,不過這時候python3.8就會出問題了,在powershell中輸入python和pip都只有python3.6版本,如果想使用會python3.8可能得刪除與python3.6相關的環境變數,我目前沒有想到什麼好的解決方法,大家有好的方法歡迎評論交流~

再順帶解決一個問題,因為我是在pycharm下使用python的,當我把直譯器切換到python3.6時會彈出Cannot set up a python SDK at Python 3.6 (untitled5).The SDK seems invalid.,如下圖(隨便找了一個人類似的錯誤圖)

我的解決辦法是看下你的python資料夾下有沒有python.exe檔案,因為我之前直接把python.exe改名為python3.exe,而不是保留python.exe進行復制改名(即資料夾下同時存在python.exe和python3.exe),所以可能pycharm識別不到就安裝不了sdk