比較 venv、virtualenv 與 pipenv
Python 提供多種管理虛擬環境的工具,包括 venv、virtualenv 和 pipenv,它們在操作方式與程式管理上有所不同。以下是詳細比較:
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 |
自動管理 Pipfile 和 Pipfile.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
- 主要取代
venv和virtualenv,並加強依賴管理。 - 使用
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 可能是更好的選擇。
沒有留言:
張貼留言