在 Python 开发中,虚拟环境(Virtual Environment) 是不可绕过的一环。它能帮助我们隔离项目的依赖,让开发更高效、部署更稳定。
目前主流的虚拟环境管理工具包括:
-
virtualenv
/venv
(轻量、原生) -
conda
(强大、跨语言) -
uv
(新锐、极速、现代)
那么它们之间有什么区别?又该如何使用?本文将为你一一解析,并附上完整的使用教程,让你轻松掌握虚拟环境的使用之道!
一、三大工具横向对比
特性 | virtualenv/venv | conda | uv(新版 pip 替代品) |
开发语言 | Python 原生 | Anaconda 平台 | Rust 编写(极致速度) |
是否跨语言 | 否 | 是(支持 R、Julia 等) | 否 |
安装包源 | PyPI | Conda 仓库 + 可对接 PyPI | PyPI(更快) |
环境隔离 | 有效 | 更彻底、可管理依赖树 | 快速构建 .venv 目录 |
依赖管理 | pip + requirements.txt | conda + env.yaml | uv pip, uv venv |
使用难度 | 简单 | 中等 | 简单(命令现代化) |
推荐场景 | 轻量项目/部署脚本 | 数据科学、AI 项目 | 新手/想要快速启动项目 |
二、三种工具的基本用法详解
🔹 1. virtualenv / venv(推荐程度:✅✅✅)
安装
-
Python3.3+ 自带
venv
-
对于旧版本可用
pip install virtualenv
环境创建
# 使用 venv 创建
python -m venv myenv
# 使用 virtualenv 创建
virtualenv myenv
环境激活
# macOS / Linux
source myenv/bin/activate
# Windows
myenv\Scripts\activate
查看当前环境
# 激活状态下可以通过
which python # 或 where python
退出环境
deactivate
删除环境
rm -rf myenv # Linux / macOS,强制递归删除myenv目录及其中所有内容
rd /s myenv # Windows,删除myenv目录及其中得所有子目录和文件
🔹 2. conda(推荐程度:✅✅✅✅)
安装
-
推荐安装 Miniconda(轻量,一般适用于嵌入式设备硬件资源相对有限的环境)或 Anaconda(含全套工具)
创建环境
conda create -n myenv python=3.11
激活环境
conda activate myenv
查看环境
conda env list # 列出所有环境
conda list # 当前环境中的包
退出环境
conda deactivate
删除环境
conda remove -n myenv --all
依赖导出 & 导入
# 导出环境配置
conda env export > environment.yaml
# 通过配置文件创建环境
conda env create -f environment.yaml
🔹 3. uv(推荐程度:✅✅✅✅✅,新工具)
uv
是pip
的极速替代品,由 astral.sh 开发,构建环境的速度非常惊人!
安装
# 建议使用 curl 安装(macOS/Linux)
curl -Ls https://astral.sh/uv/install.sh | sh
# Windows 可以通过 Scoop 或预编译包安装
创建虚拟环境
uv venv myenv
激活环境
# macOS / Linux
source myenv/bin/activate
# Windows
myenv\Scripts\activate
安装依赖(极速 pip)
uv pip install requests
查看环境
uv pip list
退出环境
deactivate
💡 特点亮点
-
uv
完全兼容 pip 的大部分命令,但安装速度超快 -
支持
pyproject.toml
,未来有望取代 pip + venv 组合
🧩 三种工具选哪个?
场景 | 推荐工具 |
常规 Python 项目 | venv / virtualenv |
数据科学 / AI / 科研 | conda |
快速启动 / 极简开发 | uv |
想体验前沿工具 | uv |
想最小依赖就用:venv + pip
管理依赖精细、跨语言支持就选:conda
喜欢高性能、现代开发体验,就尝试:uv
未来的 Python 包管理趋势,可能会朝着 uv
和 pyproject.toml
靠拢,如果你是技术爱好者,不妨现在就开始尝鲜。
关注我,带你玩转 Python 实用技能! 👇你还想了解哪些开发工具技巧?欢迎留言!