MacOS上的Python路徑問題&安裝方法
本篇文章將解釋MacOS上的Python路徑還有幾種安裝方式
MacOS上Python的路徑
Python的路徑大致上分為兩種,一種是作業系統本身的(Apple-provided build of Python),另一種是使用者自己安裝的(User build of Python)
- Apple-provided build of Python
路徑在“/System/Library/Frameworks/Python.framework”還有“/usr/bin/python”,官方建議[1]不要對這版本進行修改與刪除,因為這是由Apple公司控制與使用或其他third-party software使用的。
目前在MacOS Sierra上的版本為Python2.7。
- User build of Python
由使用者自行安裝的版本,基本上怎麼修改都不會影響到系統的運作(也就是不會影響到Apple-provided build of Python),所以大可放心進行修改設定。但是由於安裝方式的不同也會讓Python的路徑產生些許差異,詳細請往下繼續閱讀⬇︎
安裝Python的幾種方式
大致上分為以下幾種
- 由Python官網下載安裝包
- Homebrew
- Pyenv
- 由Python官網下載安裝包
安裝路徑在/Library/Frameworks/Python.framework還有/usr/local/bin/這兩個位置,後者是一個symlink。另外,安裝包也會附帶IDLE、PythonLauncher這兩個軟體,安裝在Application資料夾。
如果要移除Python的話,只要將上述兩個路徑的檔案還有IDLE、PythonLauncher刪除即可。
- Homebrew
要用Homebrew安裝的話,當然第一步就是要先裝Homebrew[2],安裝完畢後,在command-line輸入
$brew install python3
即可安裝最新版本的Python3
若要移除,就輸入
$brew uninstall python3
詳細步驟可以參考這篇文章Installing Python on Mac OS X[3]
安裝完成後,路徑會在“../Cellar/python3/3.5.1/bin/python3.5”(以Python3.5為例),也會有個symlink在“/usr/local/bin”。
- Pyenv
使用Pyenv目前是我覺得最好的方式。Pyenv可以安裝multiple Python versions,滿足開發者需要在不同的版本下做測試的需求。Pyenv可以切換不同Python版本,而且切換後的版本也會變成當下系統全域可使用的,若需要其他版本再進行切換即可。也可以搭配虛擬環境使用,避免套件污染的問題。
詳細的安裝及使用方法可以參考此篇文章Using pyenv to install & manage multiple python versions[4]
這裡的路徑稍有複雜,以下說明。一切安裝完成後,輸入指令
$which python
會出現這樣的路徑
/Users/name/.pyenv/shims/python
但如果輸入指令
$ls -al /usr/local/bin/python*
結果會像這樣
/usr/local/bin/python-build -> ../Cellar/pyenv/1.0.6/bin/python-build
連結對應到的位置與上面並不相同,這是為什麼呢?因為Pyenv具有全域切換版本的功能,所以在其實在/usr/local/bin底下的symlink是連結到用Homebrew安裝Pyenv的位置,然後再由Pyenv決定調用哪個版本,而各種Python版本則安裝在家目錄裡的.pyenv底下,大致概念如此,若要再更詳細了解可能就要去研究他的程式碼了[5]。
References
[1] 4.1. Getting and Installing MacPython
[2] Homebrew — macOS 缺少的套件管理工具
[3] The Hitchhiker’s Guide to Python! — Installing Python on Mac OS X
[4] Anil Lakhman — Using pyenv to install & manage multiple python versions