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 venvuv 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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python使用Spire.XLS for Python实现TXT转Excel

    Python使用Spire.XLS for Python实现TXT转Excel

    在数据处理工作中,我们可能会遇到将TXT文本文件转换为Excel格式的需求,本文将介绍如何使用 Spire.XLS for Python 库,编写一个能够自动检测分隔符并完成转换的智能工具,希望对大家有所帮助
    2026-05-05
  • python字典和JSON格式的转换方式

    python字典和JSON格式的转换方式

    这篇文章主要介绍了python字典和JSON格式的转换方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • Python网络请求之Requests库的高级功能运用

    Python网络请求之Requests库的高级功能运用

    在这篇文章中我们将进一步深入学习Requests库的高级功能,包括处理重定向,设置超时,处理大文件以及错误和异常处理,需要的朋友可以参考下
    2023-08-08
  • python实现下载整个ftp目录的方法

    python实现下载整个ftp目录的方法

    这篇文章主要介绍了python实现下载整个ftp目录的方法,文中给出了详细的示例代码,相信对大家的理解和学习具有一定的参考借鉴价值,有需要的朋友可以一起来学习学习。
    2017-01-01
  • python matlibplot绘制多条曲线图

    python matlibplot绘制多条曲线图

    这篇文章主要为大家详细介绍了python matlibplot绘制多条曲线图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • Python安装pygit2失败问题及解决

    Python安装pygit2失败问题及解决

    这篇文章主要介绍了Python安装pygit2失败问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Python正则表达式分组

    Python正则表达式分组

    这篇文章主要介绍了Python正则表达式分组,命名分组,后向引用,前向否定断言、后向否定断言需要的朋友可以参考下
    2022-12-12
  • Python3 mmap内存映射文件示例解析

    Python3 mmap内存映射文件示例解析

    这篇文章主要介绍了Python3 mmap内存映射文件示例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • 基于Python实现多图绘制系统

    基于Python实现多图绘制系统

    这篇文章主要为大家详细介绍了如何基于Python实现一个简单的多图绘制系统,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-02-02
  • Python使用gTTS库实现文本转换为语音的详细步骤

    Python使用gTTS库实现文本转换为语音的详细步骤

    文本转换为语音(Text-to-Speech,简称TTS)技术是人工智能的重要组成部分,广泛应用于智能助手、导航系统、读屏软件和智能家居等领域,TTS技术使得机器能够将书面文字转换为自然流畅的语音,本文将介绍如何使用Python的gTTS库实现简单的TTS功能,需要的朋友可以参考下
    2024-07-07

最新评论