Python 虚拟环境管理:venv、virtualenv 与 uv 该怎么选
【摘要】 Python 解释器只有一份,但每个项目的依赖版本不同。本文对比 venv、virtualenv 与 uv 三种虚拟环境方案,给出选型建议、可运行命令示例以及虚拟环境使用中的常见坑位。
Python 虚拟环境管理:venv、virtualenv 与 uv 该怎么选
一、为什么需要虚拟环境
Python 的解释器在一台机器上通常只有一份,但不同项目依赖的库版本往往并不相同。把 PyTorch 2.1 和 NumPy 2.3 同时塞进同一个环境,是「依赖地狱」的开端。虚拟环境的本质是一个独立的 site-packages 目录,配合同一个解释器使用,各项目之间互不干扰。
二、三种主流方案对比
| 维度 | venv | virtualenv | uv |
|---|---|---|---|
| 来源 | Python 3.3+ 标准库 | 第三方经典工具 | Astral 出品,Rust 实现 |
| 创建速度 | 秒级 | 秒级 | 毫秒级(快 10~100 倍) |
| 安装依赖 | 需另装 pip | 需另装 pip | 内置,支持并发下载 |
| 项目隔离 | 依赖 requirements.txt | 依赖 requirements.txt | pyproject.toml + uv.lock |
| 适用场景 | 临时验证、初学者 | 老项目兼容 | 新项目、CI、团队协作 |
三、venv:零配置起步
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install fastapi
参数逐个解释:-m venv 是以模块方式调用标准库的 venv 模块,等价于直接运行 venv 脚本;--upgrade pip 只升级当前虚拟环境里的 pip,不会污染系统 Python。
四、uv:把等待时间打下来
uv venv
uv pip install fastapi
uv 同时自带解释器管理能力,uv python list 可以列出并安装其它 Python 版本;uv sync 依据 pyproject.toml 与 uv.lock 精确重建环境,在 CI 里尤其省心。
五、实用技巧与注意事项
- 虚拟环境目录统一命名为
.venv,并写进.gitignore,千万别把整个环境目录提交进仓库。 - 环境变量
PYTHONPATH、PYTHONHOME会干扰虚拟环境的解析,出了问题先执行env | grep PYTHON排查。 - 项目之间不要复用同一个虚拟环境,更不要图省事用系统 Python 直接
pip install --user。 - Windows 下的激活脚本是
.venv\\Scripts\\activate.bat,解释器路径为.venv\\Scripts\\python.exe。
六、结论
临时跑一段验证代码,用标准库自带的 venv 就够;日常开发、CI 流水线和多人协作的项目,直接上 uv,创建与安装都快了一个数量级。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)