為什要要這樣做?
我們都知道 macOS 有 Python,為了不將預設的環境弄髒。比較推薦的做法是透過 pyenv
這套 Python 版本管理工具來安裝不同的 Python 版本,如此一來要切換不同的版本也方便,畢竟還是有很多專案是用 Python2 在維護。
如果你沒有使用不同的 Python 版本需求也可以無視這篇,但是建議至少用 virtualenv
來開發專案,才不會把內建的 Python 環境弄成一團亂。
檢查目前版本
目前我的 macOS 的 Python 是預設的 Python:
which python
1 | /usr/bin/python |
python
1 | WARNING: Python 2.7 is not recommended. |
用 pyenv 來管理 Python 版本
首先,先安裝 pyenv:
brew install pyenv
安裝完畢後確認自己的環境變數:
echo $PATH
1 | /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin |
初始設定設定
~/.zshrc
請自行替換成你的 shell 的設定檔位置(bash 的話是 ~/.bash_profile
):
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.zshrc
重新載入 shell:
source ~/.zshrc
重新確認環境變數:
echo $PATH
1 | /Users/yiyuchang/.pyenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin |
可以發現家目錄下多了一個 .pyenv/shims
管理這些套件,這也是 pyenv
進行神秘魔法的地方 🧙♂️
開始使用 pyenv
確認目前 Python 版本為系統版本:
pyenv global
1 | system |
顯示可取用的 Python 版本pyenv install --list
1 | Available versions: |
裡面有各式各樣的 Python interpreter,在這邊,我想使用官方的 3.8.1 版本,先進行安裝:
pyenv install 3.8.1
1 | python-build: use openssl@1.1 from homebrew |
查看目前本地端所有的 Python 版本(有星號代表目前正在使用):
pyenv versions
1 | * system (set by /Users/yiyuchang/.pyenv/version) |
將 Python 切換到剛才下載的 3.8.1:
pyenv global 3.8.1
pyenv versions
1 | system |
切換不一定要使用 global
, global
代表全域的 Python 版本,另外兩種方式local
或是 shell
有興趣的朋友可以去了解一下,可以更彈性的進行 Python 版本管理
接著確認 Python 是不是真的切換到我們剛才下載的 3.8.1
了:
which python
1 | /Users/yiyuchang/.pyenv/shims/python |
python
1 | Python 3.8.1 (default, Jan 11 2020, 12:25:19) |
大功告成!如此一來之後就可以輕鬆地在不同專案下使用 Python 了。不過建議在不同專案還是要使用 virtualenv
來管理,否則套件全部會裝在本機的全域的 Python 環境上,如果不同專案要用到不同版本的套件,又會變得一團糟!