用這個方法解決Python多版本共存問題,簡單粗暴


原文鏈接:http://www.juzicode.com/python-note-multi-version-python

老規矩先拋問題:

一台電腦上安裝有多個Python版本、多套虛擬環境,如何在命令行快速啟動對應的版本?

這里結論也先給出來,方便不想看水文的同學:

可以編寫多個對應版本的批處理文件,在批處理文件中設置path變量,將對應版本的路徑添加到path路徑的最前面,這樣要運行哪個版本或虛擬環境打開對應的批處理文件即可:

問題和結論講完了,接下來聊下為什么可以這么做,下面的描述以運行Python解釋器為例,同樣適用運行pip安裝第三方包。

在命令行輸入“Python”時,命令行會去系統中查找名稱為Python的可執行文件,通過計算機基礎–Windows PATH變量、命令行、搜索路徑中的描述,實際上會按照如下的優先級順序查找Python可執行文件:

  • 1.從當前工作目錄查找。
  • 2.環境變量系統PATH。
  • 3.環境變量用戶PATH。

如果當前工作目錄沒有找到,則會到系統PATH變量和用戶PATH變量中從前往后查找,這也是我們在安裝Python的時候一般要求勾選“Add Python3.x to PATH”的原因。

但是當安裝多個Python版本時,雖然所有的Python安裝路徑都添加到了PATH變量中,但是PATH變量的路徑查找也有優先級:從前向后搜索。比如桔子菌的電腦里裝了如下多種Python版本以及虛擬環境:

PATH變量的組織形式如下圖所示:

在命令行輸入“Python”時,系統會在PATH變量表示的路徑中從前往后搜索Python可執行程序,在最前面的D:\Python\Python310下找到了Python可執行文件,所以執行的總是PATH變量中路徑處於最前面的Python3.10,在這種情況下想要直接調用其他版本的Python是做不到的:

如果想在命令行里輸入“python”直接調用Python3.8版本,可以通過修改PATH中路徑的排序,將Python3.8的路徑移動到所有其他Python版本路徑的前面就行,但是這種方法在更換Python版本時,需要每次進入系統變量界面修改並且重啟命令行。

當然如果要調用其他版本的Python,也可以切換到相應的安裝目錄下再運行Python,比如要調用3.8版本,就可以切換到3.8版本的安裝目錄下再運行“python”:

或者將Python的完整路徑輸入后再運行

前面這3種方法雖然能達到目的,但是稍顯繁瑣,每次都要切換路徑或者輸入完整路徑,有沒有更簡便的方法呢?

答案是有的,請繼續往下看……

仍然是從PATH變量入手,既然為了調用對應的Python,PATH變量每次都要修改,那是不是可以在每次啟動Python前設置一次PATH變量,將需要調用的Python路徑設置在PATH路徑的最前面呢?答案是可行的:

從這里可以看到,直接調用python時,運行的是PATH路徑中最前面的3.10,但是經過使用set命令將3.8版本的安裝路徑添加到PATH變量的最前面時,再次調用python,運行的就是3.8版本了。

這種方法修改PATH變量是臨時的,不會真正地修改系統變量配置界面里的值,它不會影響到這台電腦上其他程序的運行,但是缺點是每次要調用其他Python版本時仍然要敲一次set命令才能生效。

每次輸入set命令添加路徑太過麻煩,可以將set命令放在一個批處理文件中,一個Python版本對應一個批處理文件,這樣就可以免去輸入set命令的麻煩,下面這個例子第1行set命令添加3.8版本python安裝目錄到PATH變量,第2行wt命令啟動WindowsTerminal:

set path=D:\Python\Python38\Scripts;D:\Python\Python38;%path%
wt

如果沒有安裝wt,第2行也可以改成cmd啟動系統自帶的命令行:

set path=D:\Python\Python38\Scripts;D:\Python\Python38;%path%
cmd

這樣對應不同的Python版本和虛擬環境,就可以有多個批處理文件,比如要啟動3.8版本的Python,雙擊3.8版本對應批處理文件,然后在彈出的命令行下運行“python”,可以看到啟動的是3.8版本:

-------分割線表示正文結束了--------

夢想是要有的,萬一實現了呢

圖片

推薦閱讀:

tesseract訓練字體居然還有這種騷操作

新鮮上架的Python3.10,來個match-case嘗嘗鮮

你別耍我,0.1+0.2居然不等於0.3?

如何實現一個“萬能”的調試打印函數

有了這款神器,什么吃灰文件都統統現形

一行代碼深度定制你的專屬二維碼(amzqr)

桔子菌和超市老板田大爺的一次角色互換經歷

來看看怎么用OpenCV解構Twitter大牛的視覺錯覺圖


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM