Python虛擬環(huán)境venv、uv、conda詳細(xì)對比
前言
本文總結(jié)并對比三種常用 Python 環(huán)境管理方式:venv(標(biāo)準(zhǔn)庫)、uv(Astral)、conda(Anaconda/Miniconda),包括創(chuàng)建流程與各自優(yōu)缺點。
一、venv(Python 標(biāo)準(zhǔn)庫)
簡介
venv 是 Python 3.3+ 內(nèi)置模塊,用于創(chuàng)建輕量級、與系統(tǒng) Python 隔離的虛擬環(huán)境,不依賴額外安裝。
創(chuàng)建環(huán)境流程
# 1. 創(chuàng)建虛擬環(huán)境(默認(rèn)在當(dāng)前目錄下生成 venv 目錄) python -m venv .venv # 或指定路徑/名稱 python -m venv myenv # 2. 激活環(huán)境 # macOS/Linux: source .venv/bin/activate # Windows (CMD): .venv\Scripts\activate.bat # Windows (PowerShell): .venv\Scripts\Activate.ps1 # 3. 安裝依賴 pip install -r requirements.txt # 或 pip install some-package # 4. 退出環(huán)境 deactivate
優(yōu)缺點
| 優(yōu)點 | 缺點 |
|---|---|
| 無需額外安裝,Python 自帶 | 依賴系統(tǒng)/已安裝的 Python 版本,不能方便地裝多版本 Python |
| 輕量、目錄小、無額外進(jìn)程 | 安裝包速度一般,依賴解析能力一般 |
| 與 pip 完全兼容,生態(tài)統(tǒng)一 | 僅限 Python,不能管理非 Python 依賴(如 C 庫、CUDA) |
| 跨平臺、腳本簡單 | 沒有鎖文件,復(fù)現(xiàn)依賴需自行維護(hù) requirements.txt |
適用場景
- 純 Python 項目、腳本、Web 后端
- 已有固定 Python 版本,只需隔離依賴
- 不想裝額外工具、CI/服務(wù)器環(huán)境簡單
二、uv(Astral 出品)
簡介
uv 是用 Rust 編寫的 Python 包與環(huán)境管理工具,兼容 pip/venv 工作流,但速度更快,并支持項目式工作流(類似 Node/npm)。
安裝
# macOS/Linux curl -LsSf https://astral.sh/uv/install.sh | sh # 或 Mac Homebrew brew install uv # Windows (PowerShell) powershell -c "irm https://astral.sh/uv/install.ps1 | iex" # 任意系統(tǒng) pip 安裝 pip install uv
創(chuàng)建環(huán)境流程
方式 A:傳統(tǒng) venv 風(fēng)格
# 1. 創(chuàng)建虛擬環(huán)境(默認(rèn) .venv) uv venv # 指定名稱或路徑 uv venv myenv # 指定 Python 版本(會自動下載該版本) uv venv --python 3.11 # 2. 激活環(huán)境(與 venv 相同) source .venv/bin/activate # macOS/Linux # .venv\Scripts\activate # Windows # 3. 用 uv 加速安裝(在已激活環(huán)境中) uv pip install -r requirements.txt # 或仍用 pip pip install some-package # 4. 退出 deactivate
方式 B:項目式工作流(推薦)
# 1. 初始化項目(生成 pyproject.toml、.venv、uv.lock) uv init my-project cd my-project # 2. 添加依賴(自動更新 lock 文件) uv add requests pandas # 3. 運(yùn)行腳本(自動使用項目虛擬環(huán)境) uv run main.py # 或先激活再運(yùn)行 source .venv/bin/activate python main.py
優(yōu)缺點
| 優(yōu)點 | 缺點 |
|---|---|
| 安裝依賴極快(Rust 實現(xiàn)) | 需額外安裝 uv,非標(biāo)準(zhǔn)庫 |
| 可指定并自動下載 Python 版本 | 社區(qū)與文檔相對 conda 較小 |
| 項目式工作流 + lock 文件,復(fù)現(xiàn)性好 | 主要面向 Python,非 Python 依賴需配合系統(tǒng)/conda |
| 兼容 pip/venv,可漸進(jìn)遷移 | 對 Windows 上復(fù)雜 C 擴(kuò)展支持不如 conda 成熟 |
| 一條命令創(chuàng)建環(huán)境 + 裝包,體驗接近現(xiàn)代前端工具 | — |
適用場景
- 新項目、希望依賴可復(fù)現(xiàn)(uv.lock)
- 需要多 Python 版本但不想裝完整 Anaconda
- 重視安裝速度與開發(fā)體驗(本地/CI 都適用)
三、conda(Anaconda / Miniconda)
簡介
Conda 是跨語言的環(huán)境與包管理器,可安裝多版本 Python 以及大量科學(xué)計算、C/C++ 等非 Python 依賴,適合數(shù)據(jù)科學(xué)與科研環(huán)境。
安裝
- Anaconda:完整發(fā)行版,含圖形界面和大量預(yù)裝科學(xué)包
- Miniconda:最小安裝,僅 conda + Python,按需裝包(更推薦)
從 conda 官網(wǎng) 下載對應(yīng)平臺安裝包并安裝。
創(chuàng)建環(huán)境流程
# 1. 創(chuàng)建環(huán)境并指定 Python 版本 conda create -n myenv python=3.11 # 指定更多包 conda create -n myenv python=3.11 numpy pandas # 2. 激活環(huán)境 conda activate myenv # 退出 conda deactivate # 3. 安裝包 conda install numpy # 或使用 pip(在 conda 環(huán)境中) pip install some-pypi-only-package # 4. 導(dǎo)出/復(fù)現(xiàn)環(huán)境 conda env export > environment.yml conda env create -f environment.yml
優(yōu)缺點
| 優(yōu)點 | 缺點 |
|---|---|
| 可安裝多版本 Python 與大量二進(jìn)制包(如 NumPy、CUDA) | 體積大、安裝/解析較慢 |
| 非 Python 依賴管理強(qiáng)(C 庫、R、CUDA 等) | 與 PyPI 不完全一致,混用 pip 可能產(chǎn)生沖突 |
| 數(shù)據(jù)科學(xué)/科研生態(tài)成熟,很多教程默認(rèn) conda | 環(huán)境數(shù)量多時占用磁盤多 |
| 跨平臺一致性好,適合團(tuán)隊統(tǒng)一環(huán)境 | 商業(yè)使用需注意 Anaconda 許可條款(Miniconda 無此問題) |
適用場景
- 數(shù)據(jù)科學(xué)、機(jī)器學(xué)習(xí)、科學(xué)計算(NumPy/Pandas/CUDA 等)
- 需要嚴(yán)格控制二進(jìn)制依賴版本(如 CUDA、MKL)
- 團(tuán)隊/實驗室統(tǒng)一使用 Anaconda/Miniconda
四、三者對比小結(jié)
| 維度 | venv | uv | conda |
|---|---|---|---|
| 是否需額外安裝 | 否(Python 內(nèi)置) | 是 | 是 |
| 創(chuàng)建命令 | python -m venv .venv | uv venv 或 uv init | conda create -n name python=3.x |
| 多 Python 版本 | 需自行安裝多版本 Python | 支持(如 --python 3.11) | 支持(核心能力) |
| 安裝速度 | 一般 | 很快 | 較慢 |
| 依賴復(fù)現(xiàn) | 靠 requirements.txt | 支持 lock 文件 | 支持 environment.yml |
| 非 Python 依賴 | 不支持 | 主要不支持 | 支持 |
| 適用領(lǐng)域 | 通用 Python | 通用 Python、現(xiàn)代項目 | 數(shù)據(jù)科學(xué)、科研 |
五、選擇建議
- 只想隔離依賴、用系統(tǒng) Python → 用 venv 即可。
- 新項目、要快、要可復(fù)現(xiàn)、多 Python 版本 → 優(yōu)先考慮 uv。
- 做數(shù)據(jù)科學(xué)、要用 CUDA/復(fù)雜 C 庫、團(tuán)隊用 Anaconda → 用 conda(建議 Miniconda)。
在同一臺機(jī)器上可以組合使用:例如用 conda 管理數(shù)據(jù)科學(xué)大環(huán)境,用 uv/venv 做單個純 Python 項目隔離。
到此這篇關(guān)于Python虛擬環(huán)境venv、uv、conda的文章就介紹到這了,更多相關(guān)Python虛擬環(huán)境venv、uv、conda內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python使用Spire.XLS?for?Python實現(xiàn)TXT轉(zhuǎn)Excel
在數(shù)據(jù)處理工作中,我們可能會遇到將TXT文本文件轉(zhuǎn)換為Excel格式的需求,本文將介紹如何使用?Spire.XLS?for?Python?庫,編寫一個能夠自動檢測分隔符并完成轉(zhuǎn)換的智能工具,希望對大家有所幫助2026-05-05
Python網(wǎng)絡(luò)請求之Requests庫的高級功能運(yùn)用
在這篇文章中我們將進(jìn)一步深入學(xué)習(xí)Requests庫的高級功能,包括處理重定向,設(shè)置超時,處理大文件以及錯誤和異常處理,需要的朋友可以參考下2023-08-08
Python使用gTTS庫實現(xiàn)文本轉(zhuǎn)換為語音的詳細(xì)步驟
文本轉(zhuǎn)換為語音(Text-to-Speech,簡稱TTS)技術(shù)是人工智能的重要組成部分,廣泛應(yīng)用于智能助手、導(dǎo)航系統(tǒng)、讀屏軟件和智能家居等領(lǐng)域,TTS技術(shù)使得機(jī)器能夠?qū)嫖淖洲D(zhuǎn)換為自然流暢的語音,本文將介紹如何使用Python的gTTS庫實現(xiàn)簡單的TTS功能,需要的朋友可以參考下2024-07-07

