2025年2月15日 星期六

比較 venv、virtualenv 與 pipenv

 比較 venvvirtualenvpipenv

Python 提供多種管理虛擬環境的工具,包括 venvvirtualenvpipenv,它們在操作方式程式管理上有所不同。以下是詳細比較:


1. 操作上的差異

venv (內建) virtualenv (額外安裝) pipenv (現代管理)
安裝 內建於 Python 3.3+,無需額外安裝 需要手動安裝 (pip install virtualenv) 需要手動安裝 (pip install pipenv)
建立環境 python -m venv myenv virtualenv myenv pipenv install
啟動環境 Windows: myenv\Scripts\activate Mac/Linux: source myenv/bin/activate venv pipenv shell
安裝套件 pip install package_name pip install package_name pipenv install package_name
列出已安裝套件 pip list pip list pipenv graph
匯出環境 pip freeze > requirements.txt pip freeze > requirements.txt 自動管理 PipfilePipfile.lock
刪除環境 刪除資料夾 (rm -rf myenv) 刪除資料夾 (rm -rf myenv) pipenv --rm

2. 程式上的差異

(1) venv

  • Python 3.3+ 內建,輕量簡單。
  • 只負責虛擬環境的建立與隔離,不管理依賴 (requirements.txt 需手動管理)。
  • 適合一般開發者,搭配 pip 進行套件管理。

建立與使用 venv

python -m venv myenv  # 建立環境
source myenv/bin/activate  # 啟動環境 (Linux/Mac)
myenv\Scripts\activate  # 啟動環境 (Windows)
pip install requests  # 安裝套件
pip freeze > requirements.txt  # 匯出依賴
deactivate  # 離開環境

(2) virtualenv

  • 需要額外安裝,但比 venv 更強大、更多功能。
  • 相容於 Python 2 和 Python 3。
  • 可以建立比 venv 更快的虛擬環境(使用 --copies 減少 symbolic links)。
  • 適合多 Python 版本管理需求。

建立與使用 virtualenv

pip install virtualenv  # 安裝 virtualenv
virtualenv myenv  # 建立環境
source myenv/bin/activate  # 啟動環境
pip install requests  # 安裝套件
deactivate  # 離開環境

(3) pipenv

  • 主要取代 venvvirtualenv,並加強依賴管理。
  • 使用 Pipfile 取代 requirements.txt,更清晰管理相依性。
  • 會自動產生 Pipfile.lock,確保環境一致性(類似 npm package-lock.json)。
  • 適合團隊開發與專案管理。

建立與使用 pipenv

pip install pipenv  # 安裝 pipenv
pipenv install  # 自動建立虛擬環境
pipenv install requests  # 安裝套件,並更新 Pipfile
pipenv shell  # 啟動環境
pipenv lock  # 鎖定相依性
pipenv --rm  # 刪除虛擬環境

3. 哪種適合你?

選擇條件 推薦工具
需要最簡單、內建的方式 venv
需要與 Python 2 相容,或更快的虛擬環境 virtualenv
需要完整的依賴管理與環境一致性(適合團隊) pipenv

結論

  • 個人開發或輕量專案venv 夠用了。
  • 更高效的環境管理virtualenv 更快、更靈活。
  • 團隊開發、專案管理pipenv 提供更好的相依性管理。

如果只是學習或開發小專案,venv 足夠;如果要確保環境一致性,pipenv 可能是更好的選擇。

沒有留言:

張貼留言

精選文章

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

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