2018年5月19日 星期六

如何更新 (升級) 由官網安裝包安裝的 Python


我知道這文章名取得很饒口,原因是我也不知道該怎麼寫比較好 ....

不知道大家是怎麼安裝 Python 的?如果是 Linux 用戶,直接在套件安裝程式裡面更新 Python 就好了,而 Windows 我沒在用了 .... 所以本篇文章是以 macOS 用戶的升級方法為主,也算是給我自己做個備份。

macOS 的情況比較特殊是因為系統有預裝一個死不更新的 Python 2.7 版,如果在終端機下執行 Python 的 *.py 檔則會預設以系統內建的舊版執行。一般來說,我會建議用戶不要去污染系統安裝的版本,因為沒弄好可能會更麻煩,所以不如在其他位置安裝新版,比如說這次我要安裝的 Python 3.6.5。

我之前就安裝過 3.5.1 版,最近想利用 pip 安裝一個第三方套件 [1],卻遇到 TLSV1_ALERT_PROTOCOL_VERSION 的問題,使得 pip 完全不能工作。經過網上搜尋得知似乎是舊版的 Python 不支援新的 SSL 連線 (不是完全了解發生了啥事 ....),最好的方法就是升級 Python。可是問題來了,該怎麼升級?由於 App store 太方便,所以大家已經習慣了一鍵升級,像這種自己從官網下載安裝包來安裝,裡面又沒有自己的升級套件的軟體 [2],著實非常麻煩,特別是像 Python 這種會灌一堆東西進系統資料庫的狠角色。

所以,以下將簡介如何升級由官網安裝包安裝的 Python [3]:

1. 去 Python 官網下載最新的 Python 安裝包,並直接安裝。

2. 前往 "應用程式" 資料夾 (/Applications/),將舊版的 Python 資料夾刪除。

3. 由於 Python 會在系統裡安裝它的 framework 及一堆捷徑,所以我們要刪除舊版的資料。首先清除舊版 framework,這個檔案夾比較不好存取,必須用 Finder 選單列 "前往" > "前往檔案夾" ("Go" > "Go to folder") 到 /Library/Frameworks/Python.framework/Versions/,在這裡把舊版的 framework (此例是 3.5) 刪除:



4. 接下來到 /usr/local/bin/,這裡面有一大堆程式的捷徑 (如下圖),因為這是終端機 shell 指令存放的路徑之一。


以我為例,我要把所有 Python 3.5 生成的捷徑都刪除,理論上用 spotlight 搜尋該資料夾中包含 "3.5" 的檔案再刪除就可以了,可是 Spotlight 在非用戶家目錄下的資料夾中有很多限制,預設是找不到任何東西的,如果開啟 Finder Spotlight 中的搜尋類型清單,會看到一大堆不知道在幹啥的東西:


選擇 "系統檔案" (system files) 沒用,因為這些捷徑不是 *.pref 檔,而你也很難定義它們是什麼類型的檔案 .... 另外,用 "shortcut" 搜尋也沒用 .... 找個檔案這麼累也是無語了,所以我用命令列指令解決這個問題,見下文。

由於步驟有點繁瑣,所以我寫了一個小程式,直接下載然後執行就可以了:Clean up old version Python.zip

輸入舊版版本號 (只需輸入一位小數)

此程式會將舊版 Python 的檔案移到垃圾桶,如果擔心誤刪可以去垃圾桶裡再次確認,如有遇到 bug 請通知我,謝謝~

20180522 update: 補充兩點:1. 刪除舊版 framework 之後,之前裝過的第三方 package 必須要重裝;2. 由於要刪除的檔案都不在家目錄下,執行 Clean up old version Python.app 的時候會需要輸入管理者的帳號與密碼,請放心使用 (事實上我也沒能力拿管理者權限為非作歹啦 ....)。



附註
1. pip 非常好用,幾乎可以說是 Python 第三方套件的 App store。
2. 有些軟體不上架 Mac App store,但有自己的升級套件,比如說 IINA 影片播放軟體,升級的體驗一點都不會比 Mac App store 差。
3. 如果還沒安裝,為了避免未來升級的麻煩,可以乾脆用 Homebrew 安裝 Python,但是裝完後有沒有 IDLE 開發環境 (IDE) 我就不清楚了,不過這種東西也是可以自己另外安裝的,比如說 Spyder

沒有留言:

張貼留言