结论先行:两者本质上是一模一样的 —— 都是 python 标准虚拟环境,.venv 只是约定俗成的目录名,uv 创建的虚拟环境默认也叫 .venv。区别只在于"谁负责创建和管理它":一个是 python 自带的 venv 模块,一个是 uv 工具。激活、使用、退出的命令完全通用。
一、两者关系对比
| 对比项 | python -m venv .venv(传统方式) | uv venv(uv 方式) |
|---|---|---|
| 本质 | python 标准库 venv 创建的虚拟环境 | 同样是标准虚拟环境,uv 只是创建/管理工具 |
| 默认目录 | .venv(名字可自定) | 默认也是 .venv,行为对齐 |
| 目录结构 | scripts/(windows)或 bin/(linux/mac) | 完全一样 |
| 激活命令 | 相同 | 相同(激活的是同一个东西) |
| 安装包 | pip install xxx | uv pip install xxx 或 uv add xxx |
| 创建速度 | 慢(秒级~十秒级) | 极快(毫秒级) |
| 自动同步 pyproject | 不支持,需手动 | uv sync 一键按 pyproject.toml 装齐依赖 |
| 免激活使用 | 需先激活或用完整路径 | uv run 自动识别并使用 .venv,可不激活 |
| python 版本管理 | 只用当前系统 python | 可自动下载/指定任意 python 版本 |
一句话: .venv 是结果(虚拟环境目录),venv/uv 是两种产生它的方式;两者激活、退出命令通用,uv 在"管理依赖"上更省事。
二、如何激活(windows 环境)
| 终端类型 | 激活命令 |
|---|---|
| git bash | source .venv/scripts/activate |
| cmd | .venv\scripts\activate.bat |
| powershell | .venv\scripts\activate.ps1(若被拦截:set-executionpolicy -scope process bypass 后重试) |
| linux / macos(参考) | source .venv/bin/activate |
激活成功的标志:命令行提示符前面会出现 (.venv),如 (.venv) user@pc:~/project$。
三、激活后的使用
| 操作 | 传统方式(pip) | uv 方式 | 免激活方式(两者通用) |
|---|---|---|---|
| 装包 | pip install requests | uv pip install requests / uv add requests | 不适用(必须在 venv 内) |
| 按清单装依赖 | pip install -r requirements.txt | uv sync(读 pyproject.toml)/ uv pip install -r requirements.txt | 不适用 |
| 运行 python | python xxx.py | 同左(激活后 python 即指向 .venv) | .venv/scripts/python xxx.py |
| 运行脚本工具 | flask run / pytest 等 | 同左 | .venv/scripts/flask run 等 |
| 查看包列表 | pip list | uv pip list | 不适用 |
| 看当前用的是哪个 python | where python(windows) | 同左 | where python |
四、如何退出
| 终端类型 | 退出命令 |
|---|---|
| 全部终端(cmd / powershell / git bash / linux) | deactivate |
退出后 (.venv) 前缀消失,python 恢复指向系统全局环境。
五、补充:uv 的独特用法(可以不激活)
| 操作 | 命令 | 说明 |
|---|---|---|
| 创建环境 | uv venv | 在当前目录生成 .venv,还可用 uv venv --python 3.12 指定版本 |
| 不激活直接跑 | uv run python app.py | uv 自动找到并使用 .venv,不需要手动激活 |
| 不激活直接装 | uv add requests | 自动写入 pyproject.toml 并同步 .venv |
| 一键同步 | uv sync | 把 pyproject.toml 里的依赖全部装进 .venv |
建议: 如果项目还没有引入 uv,传统 python -m venv .venv + 激活就完全够用;如果项目里已有 pyproject.toml 或想提速,直接 uv venv + uv sync,激活命令和传统方式一模一样,零切换成本。
到此这篇关于python 虚拟环境.venv 与 uv 对比及使用的文章就介绍到这了,更多相关python .venv 与 uv 内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论