Python 近 10 年來一直在演進,因此 Python 專案的開發也需要考慮版本的問題。

例如 Python 2 已經退休了,而現在的 Python 專案都以 Python 3 為主,然而有些公司內部的老舊專案仍以 Python 2 開發,因此開發者必須在 Python 2 與 3 之間進行切換。

如果你有 Python 版本切換上的困擾,那麼 pyenv 會是你的好朋友!

本文環境

  • macOS 10.15
  • zsh 5.7.1

安裝方式十分簡單,透過 homebrew 即可:

$ brew install pyenv

pyenv 設定

安裝 pyenv 完成之後,請執行以下指令,以進行後續的設定:

$ pyenv init

執行成功之後,會出現以下的提示,告訴我們必須在 ~/.zshrc 中加入 1 行 eval "$(pyenv init -)"

# Load pyenv automatically by appending
# the following to ~/.zshrc:

eval "$(pyenv init -)"

上述設定是登入系統後就自動啟用 pyenv 。

p.s. 如果是習慣使用 bash 的使用者,需修改 .bash_profile 而不是 .zshrc

設定完成後,執行以下指令讓 SHELL 重新啟動,讓 pyenv 的設定生效:

$ exec "$SHELL"

以上就完成設定囉!

pyenv 使用方法

pyenv 是用來幫助我們方便切換 Python 版本的工具,因此我們可以利用以下指令列出現在我們有哪些版本的 Python 可以使用:

$ pyenv versions
*  system

由於我們尚未安裝其他版本的 Python, 因此上述指令的結果只有 system ,也就是系統預設版本,在 macOS 中的版本仍是 python 2.7, 顯然不是我們應該使用的版本。

那麼 pyenv 提供哪些版本可供安裝呢?可以用以下指令列出:

$ pyenv install --list
  ...
  3.6.9
  3.7.0
  3.7-dev
  3.7.1
  3.7.2
  ...

查到版本後,就能以下指令安裝較新的版本,例如 Python 3.7.0 :

$ pyenv install 3.7.0

成功之後,再執行一次 pyenv versions ,就會發現多了 3.7.0 :

$ pyenv versions
*  system
   3.7.0

然後進一步用以下指令將系統預設的 Python 版本切換為 3.7.0 :

$ pyenv global 3.7.0

可以用以下指令驗證是否已經切換為 python 3.7.0 :

$ python --version
Python 3.7.0

如果只是短暫想切換 Python 版本的話,可以使用 pyenv local <版本> 指令切換,該指令就只會影響當前 session 的 Python 版本,例如:

$ pyenv local 3.6.5

以上就是 pyenv 的使用方法,有興趣想進一步了解 pyenv 的話可以到 pyenv GitHub 了解。

References

https://github.com/pyenv/pyenv