Python 環境設置

前言

原先在學習 Python 的時候,我一直習慣使用 Anaconda 作為我的 Python 管理工具,但是隨著長時間的使用,常常會發現 Anaconda 每當更新的時候,會有一些不明 Bug 出現,而且其安裝體積龐大,會附帶一些往往用不到的第三方套件,非常難以管理,而這幾年隨著 Vscode 開始支援 Jupyter Notebook,更讓我有了理由擺脫 Anaconda,改採用輕量化的 Pyenv 作為我的 Python 管理工具,而本篇文章主要是紀錄 pyenv + virtualenv 作為我的 Python 開發環境的設置流程。

在開始講述安裝流程之前,要先稍微提一下,其實在 macOS 中就已經有內建 Python 了,當其 Python 版本是跟隨作業系統版本的演進而進行更新,所以有時候會落後幾個版本,而且也沒辦法隨意操作進行升級(其實是有辦法,但是不會在這演述),因此我還是建議如果要使用 Python,還是另外進行安裝比較好!

個人極度不建議直接使用 MacOS 內建 Python,如同之前在「Hexo 安裝流程紀錄」中所提到的 Git 版本狀況一樣,MacOS 很多系統套件都是直接引用 MacOS 內建 Python,如果後續操作失當,有可能造成作業系統穩定性的問題,曾經我的 macOS 就被我搞到開機必定死當的狀況過(慘痛的經驗)。

前置作業

在執行 Python 的安裝之前,請先依照前篇文章「Apple Silicon MacOS 開發者環境設置流程」,先完成 Homebrew 的安裝。

安裝 Pyenv

Pyenv 主要是用來管控 Python 版本,可以依照需求切換多個 Python 版本,例如可以同時安裝 Python 2.6, Python 3.8 等版本,再依需求進行切換。

安裝流程如下

  1. 輸入以下安裝指令

    1
    brew install pyenv
  2. Zsh 設置 PATH

    1
    2
    3
    echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
    echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
    echo 'eval "$(pyenv init -)"' >> ~/.zshrc
  3. 輸入以下指令讓 PATH 生效

    1
    exec "$SHELL"
  4. 確認 Pyenv 可安裝 Python 版本

    1
    pyenv install -l
  5. 目前我選用安裝的版本為 3.12.0,所以執行以下安裝指令

    1
    pyenv install 3.12.0

    全新安裝的 Mac,在第一次安裝 Python 時,有可能會出現以下錯誤訊息 ModuleNotFoundError: No module named '_lzma',這主要是由於缺少了 lzma Library,最簡單的解決辦法是執行 brew install xz,再使用 pyenv uninstall <desired-python-version> 指令移除 Python 後重新安裝 Python 即可解決。

  6. 設置啟用 Python 版本,可分為以下三個指令

    1
    2
    3
    pyenv global 3.12.0 #對應系統(全局)啟用
    pyenv local 3.12.0 #對應當前資料夾啟用
    pyenv shell 3.12.0 #對應當前的 Shell 啟用

    其中啟用的優先度為 shell > local > global

安裝 Pyenv Virtualenv

Pyenv Virtualenv 主要是用來建立專案項目的虛擬環境,例如 A 項目需要使用到 Pandas 1.5,B 項目需要使用到 Pandas 2.1,使用 Pyenv Virtualenv 可以達到無縫切換的效果,不用特別執行 Activate/Deactivate,只需要進入/離開項目所在路徑,就會立即生效/失效,相當的方便。

  1. 輸入以下安裝指令

    1
    brew install pyenv-virtualenv
  2. Zsh 設置 PATH

    1
    eval "$(pyenv virtualenv-init -)"
  3. 輸入以下指令讓 PATH 生效

    1
    exec "$SHELL"
  4. 創建命名為「Project_A」的虛擬環境

    1
    pyenv virtualenv 3.12.0 Project_A
  5. 將當前目錄套用「Project_A」的虛擬環境

    1
    pyenv local Project_A
  6. 確認所創建的虛擬環境清單

    1
    pyenv virtualenvs
  7. 如果不想要使用這個虛擬環境,可以輸入以下指令

    1
    pyenv uninstall Project_A