OSX 使用 brew 安裝指定 Python3 版本

By chairco(Jason), Jul 24, 2017, in category Python

brew


brew 改版前如果要安裝指定版本,例如 Python 3.5.2_3:

#列出 <formula> 所有版本
$ brew versions <formula>

#安裝某個指定版本
$ brew install <formula>

改版之後這個功能似乎被拿掉了,官方上面有說明可以改成:

How do I install these formulae? Just brew tap homebrew/versions and then brew install. If the formula conflicts with one from homebrew/core or another tap, you can brew install homebrew/versions/. You can also install via URL: brew install https://raw.githubusercontent.com/Homebrew/homebrew-versions/master/.rb

這樣看起來還是只能區分 Python2 or Python3 沒辦法決定要安裝 Python3 的哪個版本。(謎之音:以前那個好像也不行噎。啊!抱頭)

後來查到一個解決方法,也很簡單,因為 brew 是透過 .rb 管理安裝,再透過 git 管理 .rb 套件版本,所以只要能夠用 git 去切換 .rb 歷程就解決了。 但在此之前需要取得 homebrew/version 底下的 formula 版本,這樣才能手動切換:

$ brew tap homebrew/versions`

接著到 /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula (or cd brew --prefix)

來到這個資料夾底下就有所有套件的 .rb,這些 .rb 就是用來安裝不同 formula。用 git 指令列出 python3 commit 歷程:

git log python3.rb

會顯示類似:

commit b1f976bb3c76bbb2a8d76cf46fea8b2c2235f631
Author: BrewTestBot <[email protected]>
Date:   Mon Jul 17 16:06:58 2017 +0000

    python3: update 3.6.2 bottle.

commit 77f4ca91f509f9379842f23fa945e3d7be86039a
Author: ilovezfs <[email protected]>
Date:   Mon Jul 17 08:40:36 2017 -0700

    python3 3.6.2

    Closes #15704.

    Signed-off-by: ilovezfs <[email protected]>

接著回到你要的版本。例如我想回到 3.5.2_3,就:

git checkout ec545d45d4512 python3.rb

接著再重新 brew install python3 完成安裝了


參考: