← 返回首页

Python 虚拟环境的几种用法对比


title: Python 虚拟环境的几种用法对比 date: 2026-04-03 tag: Python summary: venv、virtualenv、conda、uv,从最朴素到最新潮,按需选择。

Python 的虚拟环境工具一茬接一茬,新人很容易犯选择困难。我自己也换过几次,这里把常用的几种放一起对比,方便以后再有人问我。

venv(标准库自带)

venv 是 Python 3.3+ 内置的,不用装额外东西,最朴素也最稳。

python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
deactivate

适合:单纯做项目隔离,不在意性能。

virtualenv(第三方)

virtualenvvenv 早很多,特点是能为不同 Python 版本快速创建环境,且创建速度更快。现在 venv 基本够用,所以新项目我已经不用了。

conda

conda 自带科学计算栈(numpy、scipy、torch 等),数据科学场景非常方便,能解决 C 扩展依赖的麻烦事。但占空间大、激活慢。

适合:数据科学、机器学习、需要装一些有 native 依赖的包的场景。

uv(新势力)

uv 是 Astral 团队(ruff 作者)写的 Rust 实现,主打"飞快"。安装、解析依赖、创建环境都比 pip 快一个数量级。

uv venv
uv pip install -r requirements.txt

适合:愿意尝鲜的纯 Python 项目,特别是 CI 上能省不少时间。

我的现在的选择

  • 纯 Python 小项目:uv
  • 数据科学:conda
  • 写脚本玩玩、不想装东西:venv

共通的小提醒

  • .venv/env/venv/ 这些目录一定要写进 .gitignore
  • requirements.txt 不锁定版本时,CI 上可能拉到不同的小版本,建议生产环境用 pip freeze > requirements.txt 锁住。
  • 离开项目目录前记得 deactivate,不然以后命令行里跑的 python 一直会指向你那个虚拟环境。