淺談 Win10 下 Python2 與 Python3 相容問題,菜鳥的一點見解,歡迎大神指正

yuanshang發表於2019-07-13

前言

相信很多朋友在使用 python 的時候,都裝過 2、3 版本相容。以前我裝相容的時候都是手動改 python.exe 的名稱為 python2.exe 或 python3.exe。今天我看過一篇文章,才知道不應該去改 python 主程式的名稱來實現相容,這會造成很多問題。比如 pip 找不到 python 主程式檔案的位置。所以,保持 python2 和 python3 環境的官方性可以省下很多事情,不應該去亂改程式的名稱。

注意:這裡不應該亂改,是指使用改後的 python 環境。但是,可以通過修改主程式的名稱避開當前版本,當想使用的時候再改回來,這是可以的。

關於 Win10 環境變數的問題

當我們在命令列工具中,執行某條指令的時候,系統會先在當前目錄尋找執行程式,如果沒有找到,就會去使用者的環境變數中定義的路勁裡找命令,如果還沒有,就去系統的環境變數中尋找。

由於系統環境變數一般有多條,這就涉及到尋找順序的問題。

通過我的測試,系統會從上至下尋找可執行程式

Python

並且,當找到命令時,將直接執行命令,如果後面環境變數還有相同命令,將會忽略掉。

因此,看上圖,我把 python3 的執行環境放在了 python2 環境的前面。

這就造成了我執行 python --versionpip --version 返回全是 python3 的環境

Python

那麼,如果我想用 python2 的環境怎麼辦呢?

改 python2 安裝目錄中的 python.exe 為 python2.exe?

前言說了,這樣是不行的,我不應該通過修改 python 執行程式去實現環境相容。

下面就說一下我的思路,我也是通過修改 python 執行程式去實現相容,但並不是使用改後的 python。

個人思路

  • 隨便一個盤,建立一個 Shell 目錄,用來存放自己的 bat 批處理工具,然後把環境加到系統中。

    Python

    Python

  • 建立兩個批處理檔案:python2.bat 和 python3.bat

    圖片

    圖片

    python2.bat

    @echo off
    
    rename "C:\Program Files\Python37\python.exe" python.exe.disabled
    rename "C:\Program Files\Python37\Scripts\pip.exe" pip.exe.disabled

    python3.bat

    @echo off
    
    rename "C:\Program Files\Python37\python.exe.disabled" python.exe
    rename "C:\Program Files\Python37\Scripts\pip.exe.disabled" pip.exe

    上面的 C:\Program Files\Python37 請改成你們自己的路徑。

  • 最終結果如下圖

    圖片

最後說一點

相信熟悉 Window 的朋友,已經瞭解了。我這是運用系統環境從上至下尋找命令的特性,完成的 python2 和 python3 環境互切。

有更好或者當前方法有不足之處,歡迎大家指正評論。


python 初學者的獨白(大菜鳥一隻。。。)


我們是一群被時空壓迫的孩子。 ---- 愛因斯坦

相關文章