Skip to content

Python 虛擬環境(Virtual Environment)介紹

📌 什麼是虛擬環境?

Python 的 虛擬環境(Virtual Environment) 是一種獨立的 Python 執行環境,讓你在不同的專案中使用不同的 Python 版本與套件,確保環境不會相互影響。

虛擬環境可以被看作是一個封閉的 Python 執行環境,當你在這個環境內執行 Python 程式時,會使用該環境內的 Python 版本與套件,而不會影響全域(系統)環境。

📌 為什麼需要虛擬環境?

  1. 避免套件衝突

    • 假設你有兩個專案:
      • A 專案需要 Django 3.2
      • B 專案需要 Django 4.2
    • 若沒有虛擬環境,這些套件會安裝在全域,導致相互衝突。
    • 使用虛擬環境,每個專案可以獨立安裝對應的套件版本
  2. 保持環境乾淨

    • 沒有虛擬環境,所有套件都安裝在系統 Python,時間久了會變得混亂且難以管理。
    • 透過虛擬環境,每個專案的依賴(dependencies)都是獨立的,方便管理。
  3. 確保可移植性

    • 在開發時,你可以使用 requirements.txt 來記錄虛擬環境中的套件:

      pip freeze > requirements.txt
      
    • 當別人使用你的專案時,可以使用:

      pip install -r requirements.txt
      
    • 這樣可以確保團隊中的每個人、甚至部署到伺服器時,都能獲得相同的 Python 環境,避免「它在我這裡可以跑」的問題。

  4. 測試不同 Python 版本

    • 假設你開發了一個專案,想測試它在 Python 3.8 和 Python 3.11 下的表現,虛擬環境可以讓你輕鬆切換不同的 Python 版本,而不影響系統環境。

📌 常見的 Python 虛擬環境管理工具

Python 提供了多種管理虛擬環境的方法,最常見的有:

  1. venv(官方標準)
  2. conda(適用於資料科學與多語言環境)
  3. pipenv(進階管理工具,結合 pipvenv

🔹 1. venv(Python 官方內建工具)

venv 是 Python 內建的虛擬環境工具,從 Python 3.3 之後就內建支援。

venv 的優點

  • 內建於 Python,不需要額外安裝。
  • 輕量級,適合一般開發用途。
  • pip 搭配使用,可安裝與管理套件。

🚀 venv 使用方式

  1. 建立虛擬環境

    python -m venv myenv
    
  2. 啟動虛擬環境

    • Windows

      myenv\Scripts\activate
      
    • Mac/Linux

      source myenv/bin/activate
      
  3. 安裝套件

    pip install requests numpy
    
  4. 退出虛擬環境

    deactivate
    
  5. 刪除虛擬環境

    rm -rf myenv  # Mac/Linux
    rmdir /s myenv  # Windows
    

🛠 適用對象

  • 一般 Python 開發者
  • 想要簡單管理專案環境

🔹 2. conda(適合資料科學與多語言環境)

conda 是 Anaconda 與 Miniconda 內建的環境管理工具,適用於 資料科學、機器學習、科學計算 等領域,因為它能管理 Python 和非 Python 套件(如 C/C++ 庫)

conda 的優點

  • 可管理 Python 版本(不需要依賴系統的 Python)。
  • 適合資料科學與機器學習,內建許多科學計算工具(如 numpypandas)。
  • 能安裝非 Python 套件(如 tensorflowCUDA 驅動程式)。

🚀 conda 使用方式

  1. 安裝 Miniconda(輕量版)或 Anaconda(完整版)

  2. 建立虛擬環境

    conda create --name myenv python=3.9
    
  3. 啟動虛擬環境

    conda activate myenv
    
  4. 安裝套件

    conda install numpy pandas matplotlib
    
  5. 退出環境

    conda deactivate
    
  6. 刪除環境

    conda remove --name myenv --all
    

🛠 適用對象

  • 資料科學、機器學習、深度學習 開發者
  • 需要管理 Python 和非 Python 依賴(如 C/C++ 套件)

🔹 3. pipenv(進階管理工具,結合 pipvenv

pipenv結合 pip(套件管理)與 venv(環境管理) 的工具,讓 Python 虛擬環境管理更直覺。

pipenv 的優點

  • 自動管理 virtualenv
  • 使用 Pipfile 取代 requirements.txt,讓依賴管理更清晰
  • 更安全(支援 hash 驗證與環境隔離)

🚀 pipenv 使用方式

  1. 安裝 pipenv

    pip install pipenv
    
  2. 建立並啟動虛擬環境

    pipenv shell
    
  3. 安裝套件

    pipenv install requests
    
  4. 退出環境

    exit
    

🛠 適用對象

  • 想要更自動化管理虛擬環境的開發者
  • 需要較強的套件管理功能(比 venv 更完整)

📌 總結

工具 內建於 Python 可管理 Python 版本 適用對象
venv ✅ 是 ❌ 否 一般開發
conda ❌ 否 ✅ 是 資料科學、AI/ML
pipenv ❌ 否 ❌ 否 進階開發、專案管理

📌 結論

  • 一般開發者:選 venv(輕量、內建)
  • 資料科學/機器學習:選 conda(可安裝 Python + C 套件)
  • 進階管理:選 pipenv(適合大型專案)