Python虚拟环境venv、uv、conda详细对比

 更新时间:2026年05月29日 09:36:07   作者: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

四、三者对比小结

维度venvuvconda
是否需额外安装否(Python 内置)是是
创建命令python -m venv .venvuv venv 或 uv initconda 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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • django echarts饼图数据动态加载的实例

    django echarts饼图数据动态加载的实例

    今天小编就为大家分享一篇django echarts饼图数据动态加载的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • 新手入门学习python Numpy基础操作

    新手入门学习python Numpy基础操作

    这篇文章主要介绍了新手入门学习python Numpy基础操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • python列表去重的二种方法

    python列表去重的二种方法

    这篇文章主要介绍了python列表去重的二种方法,第二种方法无法保持原有顺序,需要的朋友可以参考下
    2014-02-02
  • Python内置函数object、oct()、ord()的实用指南

    Python内置函数object、oct()、ord()的实用指南

    本文详细介绍了Python中的object类、oct()函数和ord()函数,分别作为所有类的基类、八进制转换工具和字符编码解码器,适用于基类设计、进制转换和字符编码处理等场景,需要的朋友可以参考下
    2026-01-01
  • Android模拟器无法启动,报错:Cannot set up guest memory ‘android_arm’ Invalid argument的解决方法

    Android模拟器无法启动,报错:Cannot set up guest memory ‘android_arm’ I

    这篇文章主要介绍了Android模拟器无法启动,报错:Cannot set up guest memory ‘android_arm’ Invalid argument的解决方法,通过模拟器ram设置的调整予以解决,需要的朋友可以参考下
    2016-07-07
  • 正则化DropPath/drop_path用法示例(Python实现)

    正则化DropPath/drop_path用法示例(Python实现)

    DropPath 类似于Dropout,不同的是 Drop将深度学习模型中的多分支结构随机"失效",而Dropout是对神经元随机"失效"这篇文章主要给大家介绍了关于正则化DropPath/drop_path用法的相关资料,需要的朋友可以参考下
    2022-04-04
  • python脚本实现查找webshell的方法

    python脚本实现查找webshell的方法

    这篇文章主要介绍了python脚本实现查找webshell的方法,是很实用的一个功能,需要的朋友可以参考下
    2014-07-07
  • python logging日志模块的详解

    python logging日志模块的详解

    这篇文章主要介绍了python logging日志模块的详解的相关资料,希望通过本文能帮助到大家,让大家理解掌握这部分内容,需要的朋友可以参考下
    2017-10-10
  • pytorch载入预训练模型后,实现训练指定层

    pytorch载入预训练模型后,实现训练指定层

    今天小编就为大家分享一篇pytorch载入预训练模型后,实现训练指定层,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • Python3.7+tkinter实现查询界面功能

    Python3.7+tkinter实现查询界面功能

    这篇文章主要介绍了Python3.7+tkinter实现查询界面功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12

最新评论