Python該用哪個虛擬環境

venv, conda

以 Python 作為開發語言與平台, 享受到廣大的套件與擴充能力. 但是就常因為某幾個套件對環境的要求, 不得不建立虛擬環境來切割. 例如: 很可能我希望用 Python 3.10 來發資料處理的GUI 應用 (也許是因為常需要 3.10 的樣式匹配 match-case), 所以我建立一個 Python 3.10 的虛擬環境; 但是開發推理相關應用時, 我也只能多建立一個 Python 3.9 的虛擬環境, 因為 Tensorflow/PyTorch 只支援 Python 3.9.

Python 常見有 venv, virtualenv, miniconda, conda 可提供虛擬環境的套件, 其中 conda/miniconda 與純粹安裝 Python 環境(無論從官網, 還是利用諸如 Micorsoft Store 安裝) 的選擇是值得另外討論細節的, 不過對多數的人, 偏好的問題應是重點.

以下條列我個人認為影響的 Python 建立虛擬環境的選擇因素

miniconda

值得採用miniconda的特點

  1. 享受 conda 可以任意指定 Python 版本

conda create -n py36 python=3.6

conda create -n py310 python=3.10

conda create -n py210 python=2.7

#分別建立 Python 3.6, 3.10, 2.7 三個環境

  1. 如果不排斥 conda 或是決定要採 conda時, 就可以簡化成要不要自己從最基本 Python 打造一個符合自己的需求: 要, 或者需要一個相對乾淨的環境來進行開發就採用 miniconda.

不考慮miniconda的理由

  1. 無須建立多個不同 Python 版本的環境時, 就安裝 python.org 提供的

conda

如果要建立例如: Python 3.6, 3.10, 2.7 三個環境在一登入帳號下, 採 conda 或是 miniconda 就很方便.

conda 可想成 miniconda 再加上約莫有160個預安裝好套件的環境, 也就是無論需要與否, 當你建立 conda 一個虛擬環境, 馬上免費得到那160個預安裝好套件的環境. 所以評估一下自己的需求是否真需要那麼多, 再決定安裝 conda 或是 miniconda.

選擇 conda 其中一個理由是 conda 這團隊提供的套件, 會調適整個環境 .我個人遇過幾次自己無法順利安裝好深度學習GPU 運算環境, conda 卻一個指令就安裝好

venv

python 3.6 開始預設提供此 venv 虛擬環境模組, 如果沒遭遇特別問題或需求, 推薦優先採用. 安裝好 Python 馬上可以下指令, 立即創建一個 tf2 的虛擬環境.

#建虛擬環境名為 tf2, Windows 於 PowerShell

python -m venv c:\YourVirutaEnv\tf2

#啟動建好的虛擬環境, Windows 下若成功當可見每行前有 (tf2)

c:\YourVirutaEnv\tf2\Scripts\activate.ps1


#建虛擬環境名為 tf2, Linux, Mac OS:

python -m venv ~./YourVirutaEnv/tf2

#啟動建好的虛擬環境, Linux, Mac OS下若成功當可見每行前有 (tf2)

source ~./YourVirutaEnv/tf2/bin/activate

不考慮 venv 的理由

需要類似由 conda/miniconda 提供多個Python不同版本的環境, 如採用 venv 雖可達成但會稍微複雜一點

virtualenv

venv 是 virtualenv 的子集. 甚至可以透過其提供的 API 也模擬出多個Python不同版本的環境.我個人覺得架設出環境來很繁瑣, 如果真需要, 我推薦 conda 或者 miniconda.

一旦建好虛擬環境, 無論是用 conda/minconda/venv 還是virtualenv, 後續都是一樣以 pip install SOME_PKG, 例如需要安裝在此常舉例的 PySide6

pip install pyside6