2025年2月15日 星期六

Python 虛擬環境基本操作指令

Python 虛擬環境基本操作指令

這是一組 Python 虛擬環境 (venv) 的基本操作指令,用來在不同專案中隔離套件,確保每個專案使用獨立的 Python 環境,避免相互影響。


1. 每個指令的詳細說明

(1) 建立虛擬環境

python -m venv myenv  # 建立環境
  • python -m venv myenv:使用 Python 內建的 venv 模組,在當前目錄建立名為 myenv 的虛擬環境。
  • myenv 是環境的資料夾名稱,可以自訂,例如 project_env

🔹 venv 作用

  • myenv 目錄內,會建立一個獨立的 Python 環境,包括:
    • 獨立的 Python 可執行檔(python)。
    • 獨立的 pip,用來安裝專案所需的套件。
    • 與系統 Python 隔離,避免影響全局安裝的套件。

(2) 啟動虛擬環境

Linux / macOS:

source myenv/bin/activate

Windows:

myenv\Scripts\activate

🔹 啟動環境後的變化

  • 命令提示符(terminal / cmd / PowerShell)會變成 (myenv),表示目前處於該虛擬環境。
  • 在此環境內執行 pythonpip,只會影響 myenv 內的套件,不會影響系統 Python。

例如啟動後:

(myenv) $ python --version
Python 3.11.2  # 這可能是獨立的 Python 版本
(myenv) $ pip list

(3) 安裝 Python 套件

pip install requests  # 安裝 requests 套件
  • pip 是 Python 的套件管理工具,requests 是用來發送 HTTP 請求的套件。
  • pip 會在 myenv 內安裝 requests,不影響全局 Python。

安裝後可以用 pip list 檢查已安裝套件

(myenv) $ pip list
Package    Version
---------- -------
requests   2.31.0
pip        23.0.1
setuptools 65.5.0

(4) 匯出已安裝的套件

pip freeze > requirements.txt
  • pip freeze:列出目前環境中安裝的所有套件及其版本。
  • > requirements.txt:將輸出結果儲存到 requirements.txt 檔案中,方便其他人或其他環境復原相同的套件。

requirements.txt 內容示例

requests==2.31.0
numpy==1.24.3
pandas==1.5.3

🔹 這個檔案的重要性

  • 讓其他人可以快速重現相同的環境。
  • 讓自己換電腦時,可以快速安裝相同的套件。

如何使用 requirements.txt 安裝相同套件?

pip install -r requirements.txt

這樣可以自動安裝 requirements.txt 裡列出的所有套件。


(5) 離開虛擬環境

deactivate
  • deactivate 用來退出虛擬環境,回到系統 Python。
  • 結束後,命令提示符會恢復原本狀態,環境變數也會恢復。

例如:

(myenv) $ deactivate
$ python --version
Python 3.10.12  # 這是系統 Python,而不是 `myenv` 的 Python

2. 為什麼需要虛擬環境?

🔹 問題:如果不使用虛擬環境,會發生什麼?

  • 不同專案的相依性衝突

    • 假設你有兩個專案:
      1. Project A 需要 Django 3.2
      2. Project B 需要 Django 4.2
    • 如果用 全局 Python 安裝,它們會互相覆蓋,導致其中一個專案無法執行。
  • 污染全局 Python

    • 在系統 Python 上安裝大量套件,可能導致不必要的混亂,甚至影響其他系統應用程式。
  • 環境不一致

    • 你在本機電腦可以執行的程式,換到伺服器可能會因為環境不同而無法運行。
    • 使用 venv 可以確保開發環境、測試環境、正式環境都是一致的。

3. 使用虛擬環境的最佳實踐

每個專案都應該有自己的虛擬環境

在不同專案夾內建立對應的 venv

cd my_project
python -m venv venv
source venv/bin/activate

這樣確保不同專案的 Python 環境彼此獨立。

使用 requirements.txtPipfile 管理依賴

開發時,定期更新 requirements.txt

pip freeze > requirements.txt

之後可以在新環境快速還原:

pip install -r requirements.txt

不在全局安裝不必要的套件

永遠在虛擬環境內安裝套件,避免污染系統環境。


4. venvvirtualenvpipenv 的比較

venv virtualenv pipenv
內建 Python ✅ 是 (Python 3.3+ 內建) ❌ 需額外安裝 ❌ 需額外安裝
跨 Python 版本 ❌ 只支援當前 Python ✅ 支援多版本 ✅ 可自動管理 Python 版本
需求檔案格式 requirements.txt requirements.txt Pipfile + Pipfile.lock
適合對象 一般開發者,輕量專案 需要跨版本支援 團隊開發,完整環境管理

如果你是初學者或個人開發者,venv 夠用了。
如果你需要更強大的環境管理,可以考慮 virtualenvpipenv


5. 總結

  • venv 是 Python 內建的虛擬環境工具,可讓不同專案使用獨立的 Python 環境。
  • python -m venv myenv 建立環境,source myenv/bin/activate 啟動環境。
  • pip install 安裝套件,pip freeze > requirements.txt 匯出依賴。
  • deactivate 退出環境,回到系統 Python。
  • 透過 venv,避免相依性衝突、污染全局環境,確保環境一致性。

這樣,你的 Python 開發環境就能更乾淨、可控,讓每個專案獨立運行! 🚀

沒有留言:

張貼留言

精選文章

手機使用VPN進入NAS、DaikinAPP時,仍能使用其他APP如銀行,連上WIFI 或行動網路

為了避免手機使用VPN進入NAS、DaikinAPP時,仍能使用其他APP如銀行,連上WIFI 或行動網路,要修改Router Policy設定?需要把家中屬於VPN的網段設備與其他區隔?要如何設定? 為了達成您的需求: ✅ 手機連上 VPN(例如連回家中 TP-Link ER...