目錄
    Add a header to begin generating the table of contents

    macOS 安裝多個 Python 版本?pyenv 配合 VS Code 教學

    macOS 安裝多個 Python 版本?pyenv 配合 VS Code 教學
    Share on facebook
    Share on twitter
    Share on linkedin
    Share on whatsapp
    目錄
      Add a header to begin generating the table of contents

      我們上一回解釋了 macOS 上如何使用 Homebrew 安裝 Python 3。然而,我們實際編程的時候,有可能需要安裝不同版本的 Python,應對不同專案的需求。

      這次,我們一起學習如何在 macOS 上管理 Python 版本吧!

      為什麼需要不同的 Python 版本?

      Python 一個最為吸引的地方是多種類 Libraries,例如協助數據處理的 pandas、製作圖表的 plotly 等。這些 Libraries 大大提升了 Python 的用途,亦簡化了許多編程師的工作。

      我們在不同的 Python 專案上,會按需求安裝不同的 libraries。有時候,某些 library 可能只兼容至 Python 3.2 的版本,有些則兼任至 Python 3.7。

      而就像下圖,我們的任務就是為每一個專案選用一個 Python 版本。

      我是廣告 ^o^

      由此可見,實際上我們許多時候都需要在系統安裝多於一個的 Python 版本,才讓我們可以運行不同的專案。

      所幸的是,在 macOS 上安裝不同版本的 Python 不是十分困難。以下我們一起逐步安裝不同的 Python 版本吧!

      第 1 步:安裝 pyenv

      這裡我們假設您已經安裝 Homebrew。假如您未安裝 Homebrew,可以跟從這個教學:macOS 如何下載安裝 Python 3?教您輕鬆逐步用 Homebrew

      首先我們安裝一個名叫 pyenv 的軟體。pyenv 是一個可以用 Homebrew 安裝的軟體,用於管理不同 Python 的版本。

      我們先在 Terminal 運行以下代碼:

      我是廣告 ^o^
      brew install pyenv

      完成後,您應該會見到如下圖一樣。

      第 2 步:獲取可安裝的 Python 版本

      安裝了 pyenv 以後,我們可以查看 pyenv 有甚麼版本的 Python 可以選擇。

      我們在 Terminal 運行以下代碼,可以獲取所有可以安裝的 Python 版本:

      pyenv install --list

      如上圖所示,pyenv 提供的 Python 版本非常多。我們如果知道自己需要安裝 Python 3.X 版本,可以使用以下指令獲得所有 Python 3.X 可以安裝的版本:

      pyenv install --list | grep "^\s*3.10"

      您可以將以上的指令修改成其他版本,例如想要 Python 3.7 的版本的話,可以使用 pyenv install --list | grep "^\s*3.8"

      我是廣告 ^o^

      第 3 步:安裝 Python 其他版本

      當我們使用 pyenv install --list 找到所需的 Python 版本後,我們可以使用以下簡單的指令安裝 Python 版本。

      首先我們安裝 Python 3.10.2:

      pyenv install 3.10.2

      安裝了以後,我們應該會見到以下的頁面。

      如果我們現在檢查 pyenv 安裝了什麼版本的 Python 時,我們可以使用以下的指令:

      pyenv versions

      留意上圖我們有 “system” 和 “3.10.2” 的 Python 安裝。system 指的是我們 macOS 系統本來已經安裝的 Python 版本,而 3.10.2 則是我們剛剛安裝的 pyenv 版本。

      我是廣告 ^o^

      我們現在再安裝 Python 3.8.9 版本:

      pyenv install 3.8.9

      完成後,我們再如下圖輸入 pyenv versions 的指令,可以見到現在我們已經有 “system”, “3.10.2” 和 “3.8.9” 的 Python 版本。

      第 4 步:運行簡單的 Python 指令

      來到這一步,我們先介紹一下如何使用 pyenv 安裝的 Python 吧。

      正常來說,我們運行 python 編程時,會在 Terminal 輸入 python main.py 的指令。但是,如果我們需要使用 pyenv 安裝的 Python 版本,有 2 個做法:

      1. 透過特殊的指令組合直接運行編程
      2. 透過建立虛擬環境運行編程

      我們會在 VS Code 的運用上介紹第 2 種的做法。

      我是廣告 ^o^

      如果我們只想做一些簡單的 Python 指令,可以使用以下的方式。最簡單的用途是獲取 Python 版本:

      pyenv local 3.10.2
      pyenv exec python --version

      留意以上的指令第 1 行有 “local” 的字眼:這是指在現在的環境,我們希望選用 Python 3.10.2。

      我們把指令稍微修改,看看會發生甚麼?

      pyenv local 3.8.9
      pyenv exec python --version

      留意我們現在的 Python 版本改變了! 因此,我們如果要運行 main.py 的時候,便需要使用以下的語法:

      pyenv local 3.10.2
      pyenv exec python main.py

      第 5 步:連合 VS Code 使用

      當您使用 pyenv 安裝了新的 Python 版本後,如果您在 VS Code 裡尋找 Python Interpreter,會見到這些的 Python 安裝。

      我是廣告 ^o^

      您可以在 VS Code 按 Command + Shift + P,選擇「Python: Select Interpreter」:

      當然,每一次使用 Python 的時候都需要像上面的話,難免會有點繁複。而且,我們除了 Python 內置功能外,許多時候亦需要安裝其他的 Library 完成工作。

      因此,另一個更好的方法就是建立虛擬環境。

      如果您不知道什麼是虛擬環境,可以參考這篇教學:VSCode 2/5: 設定虛擬環境 Virtual Env,管理 Python 專案!

      以下的內容其實與我們先前的教學十分類似,如果您想要更詳細的講解可以按這裡

      我是廣告 ^o^

      我們首先要使用 VS Code 的 Terminal (Command + Shift + P,然後選擇「Python: Create Terminal」)安裝一個叫做 virtualenv 的 Python 配件,讓我們可以建立虛擬環境。

      pyenv local 3.8.9
      pyenv exec pip3 install virtualenv
      pyenv exec virtualenv .venv-3-8-9

      以上的指令告訴 pyenv 安裝的 Python 3.8.9 去安裝 virtualenv,並建立一個新的虛擬環境。您會立刻在 VS Code 的右下方見到這個彈出。按一下「Yes」。

      當您把 VS Code 的 Terminal 關閉並重啟(Command + Shift + P,然後選擇「Python: Create Terminal」)後,便會見到如下圖的(.venv-3-8-9)在您的指令前。

      輸入 python --version 後,可以見到現在的 Python 預設版本為 3.8.9:

      由此可見,以後每當您使用 VS Code 的時候,便可以直接使用 python main.py,就可以使用您在虛擬環境指定的 Python 版本,省略了許多步驟。

      我是廣告 ^o^

      在 VS Code 按 Command + Shift + P,選擇「Python: Select Interpreter」後,現在我們可以見到 Python Interpreter 被設定為虛擬環境的 Python 版本了。

      結語

      希望這次的教學讓您能遊走於不同的 Python 版本,選擇您所需的版本工作吧!

      人氣文章

      快讓我學更多

      small_c_popup.png
      想學習 Python 嗎?
      快來訂閱我們的電子報!