Python虚拟环境venv、uv、conda详细对比
作者:02Bigboy
在Python开发中虚拟环境是隔离项目依赖的关键工具,这篇文章主要介绍了Python虚拟环境venv、uv、conda的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
前言
本文总结并对比三种常用 Python 环境管理方式:venv(标准库)、uv(Astral)、conda(Anaconda/Miniconda),包括创建流程与各自优缺点。
一、venv(Python 标准库)
简介
venv 是 Python 3.3+ 内置模块,用于创建轻量级、与系统 Python 隔离的虚拟环境,不依赖额外安装。
创建环境流程
# 1. 创建虚拟环境(默认在当前目录下生成 venv 目录) python -m venv .venv # 或指定路径/名称 python -m venv myenv # 2. 激活环境 # 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. 退出环境 deactivate
优缺点
| 优点 | 缺点 |
|---|---|
| 无需额外安装,Python 自带 | 依赖系统/已安装的 Python 版本,不能方便地装多版本 Python |
| 轻量、目录小、无额外进程 | 安装包速度一般,依赖解析能力一般 |
| 与 pip 完全兼容,生态统一 | 仅限 Python,不能管理非 Python 依赖(如 C 库、CUDA) |
| 跨平台、脚本简单 | 没有锁文件,复现依赖需自行维护 requirements.txt |
适用场景
- 纯 Python 项目、脚本、Web 后端
- 已有固定 Python 版本,只需隔离依赖
- 不想装额外工具、CI/服务器环境简单
二、uv(Astral 出品)
简介
uv 是用 Rust 编写的 Python 包与环境管理工具,兼容 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" # 任意系统 pip 安装 pip install uv
创建环境流程
方式 A:传统 venv 风格
# 1. 创建虚拟环境(默认 .venv) uv venv # 指定名称或路径 uv venv myenv # 指定 Python 版本(会自动下载该版本) uv venv --python 3.11 # 2. 激活环境(与 venv 相同) source .venv/bin/activate # macOS/Linux # .venv\Scripts\activate # Windows # 3. 用 uv 加速安装(在已激活环境中) 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. 运行脚本(自动使用项目虚拟环境) uv run main.py # 或先激活再运行 source .venv/bin/activate python main.py
优缺点
| 优点 | 缺点 |
|---|---|
| 安装依赖极快(Rust 实现) | 需额外安装 uv,非标准库 |
| 可指定并自动下载 Python 版本 | 社区与文档相对 conda 较小 |
| 项目式工作流 + lock 文件,复现性好 | 主要面向 Python,非 Python 依赖需配合系统/conda |
| 兼容 pip/venv,可渐进迁移 | 对 Windows 上复杂 C 扩展支持不如 conda 成熟 |
| 一条命令创建环境 + 装包,体验接近现代前端工具 | — |
适用场景
- 新项目、希望依赖可复现(uv.lock)
- 需要多 Python 版本但不想装完整 Anaconda
- 重视安装速度与开发体验(本地/CI 都适用)
三、conda(Anaconda / Miniconda)
简介
Conda 是跨语言的环境与包管理器,可安装多版本 Python 以及大量科学计算、C/C++ 等非 Python 依赖,适合数据科学与科研环境。
安装
- Anaconda:完整发行版,含图形界面和大量预装科学包
- Miniconda:最小安装,仅 conda + Python,按需装包(更推荐)
从 conda 官网 下载对应平台安装包并安装。
创建环境流程
# 1. 创建环境并指定 Python 版本 conda create -n myenv python=3.11 # 指定更多包 conda create -n myenv python=3.11 numpy pandas # 2. 激活环境 conda activate myenv # 退出 conda deactivate # 3. 安装包 conda install numpy # 或使用 pip(在 conda 环境中) pip install some-pypi-only-package # 4. 导出/复现环境 conda env export > environment.yml conda env create -f environment.yml
优缺点
| 优点 | 缺点 |
|---|---|
| 可安装多版本 Python 与大量二进制包(如 NumPy、CUDA) | 体积大、安装/解析较慢 |
| 非 Python 依赖管理强(C 库、R、CUDA 等) | 与 PyPI 不完全一致,混用 pip 可能产生冲突 |
| 数据科学/科研生态成熟,很多教程默认 conda | 环境数量多时占用磁盘多 |
| 跨平台一致性好,适合团队统一环境 | 商业使用需注意 Anaconda 许可条款(Miniconda 无此问题) |
适用场景
- 数据科学、机器学习、科学计算(NumPy/Pandas/CUDA 等)
- 需要严格控制二进制依赖版本(如 CUDA、MKL)
- 团队/实验室统一使用 Anaconda/Miniconda
四、三者对比小结
| 维度 | venv | uv | conda |
|---|---|---|---|
| 是否需额外安装 | 否(Python 内置) | 是 | 是 |
| 创建命令 | python -m venv .venv | uv venv 或 uv init | conda create -n name python=3.x |
| 多 Python 版本 | 需自行安装多版本 Python | 支持(如 --python 3.11) | 支持(核心能力) |
| 安装速度 | 一般 | 很快 | 较慢 |
| 依赖复现 | 靠 requirements.txt | 支持 lock 文件 | 支持 environment.yml |
| 非 Python 依赖 | 不支持 | 主要不支持 | 支持 |
| 适用领域 | 通用 Python | 通用 Python、现代项目 | 数据科学、科研 |
五、选择建议
- 只想隔离依赖、用系统 Python → 用 venv 即可。
- 新项目、要快、要可复现、多 Python 版本 → 优先考虑 uv。
- 做数据科学、要用 CUDA/复杂 C 库、团队用 Anaconda → 用 conda(建议 Miniconda)。
在同一台机器上可以组合使用:例如用 conda 管理数据科学大环境,用 uv/venv 做单个纯 Python 项目隔离。
到此这篇关于Python虚拟环境venv、uv、conda的文章就介绍到这了,更多相关Python虚拟环境venv、uv、conda内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
