查看: 254|回复: 0

Python虚拟环境.venv与uv创建使用对比:激活、依赖安装、退出

[复制链接]
发表于 2 小时前 | 显示全部楼层 |阅读模式
结论先行:.venv 与 uv 不是两套互斥的虚拟环境。.venv 是虚拟环境目录的常见约定名,python -m venv 与 uv venv 最终生成的都是 Python 标准虚拟环境;差别在于创建和管理工具:前者用 Python 自带的 venv 模块,后者用 uv。激活、使用、退出的命令对两者通用,uv 的优势集中在依赖同步、免激活运行和 Python 版本管理。

一、创建方式与核心差异
传统方式:
  1. python -m venv .venv
复制代码
这种方式由 Python 标准库 venv 创建虚拟环境,默认目录可用 .venv,也可以自定义名称。uv 方式:
  1. uv venv
  2. uv venv --python 3.12
复制代码
uv 默认同样生成 .venv,行为与通用约定对齐;--python 参数可用于指定版本。两者生成的目录结构完全一样:Windows 下是 Scripts/,Linux/macOS 下是 bin/。

差异主要在管理能力:传统 venv 创建速度通常是秒级到十秒级,uv 创建速度可到毫秒级;传统方式不支持自动同步 pyproject,需要手动处理,uv sync 可按 pyproject.toml 一键装齐依赖;传统方式运行前通常要先激活,或用完整路径,uv run 可自动识别并使用 .venv,不必激活;Python 版本管理上,传统方式只能使用当前系统 Python,uv 可自动下载或指定任意 Python 版本。

二、Windows 下激活虚拟环境
不同终端激活命令不同。Git Bash:
  1. source .venv/Scripts/activate
复制代码
CMD:
  1. .venv\Scripts\activate.bat
复制代码
PowerShell:
  1. .venv\Scripts\Activate.ps1
复制代码
如果 PowerShell 拦截脚本,先执行:
  1. Set-ExecutionPolicy -Scope Process Bypass
复制代码
然后重试。Linux / macOS 可参考:
  1. source .venv/bin/activate
复制代码
激活成功的标志是命令行提示符前出现 (.venv),例如 (.venv) user@pc:~/project$。

三、激活后的常用操作
激活后,pip 和 uv 都可以在同一个虚拟环境内工作。传统 pip 方式:
  1. pip install requests
  2. pip install -r requirements.txt
  3. python xxx.py
  4. flask run
  5. pytest
  6. pip list
  7. where python
复制代码
uv 方式:
  1. uv pip install requests
  2. uv add requests
  3. uv sync
  4. uv pip install -r requirements.txt
  5. uv pip list
复制代码
其中 uv sync 用于读取 pyproject.toml 并安装依赖,uv pip install -r requirements.txt 也可按 requirements.txt 安装。激活后运行 Python,python 即指向 .venv。如果不激活,也可以用完整路径运行,例如:
  1. .venv/Scripts/python xxx.py
  2. .venv/Scripts/flask run
复制代码
但装包、按清单装依赖、查看包列表这类操作,在完全不激活的通用方式里并不适用,仍需要在虚拟环境中执行。

四、退出虚拟环境
所有终端通用:
  1. deactivate
复制代码
退出后 (.venv) 前缀消失,python 恢复指向系统全局环境。

五、uv 的独特用法:不激活也能工作
如果项目使用 uv,可以不走传统激活流程。常用命令如下:
  1. uv venv
  2. uv venv --python 3.12
  3. uv run python app.py
  4. uv add requests
  5. uv sync
复制代码
含义分别是:在当前目录生成 .venv;指定 Python 版本创建环境;uv run 自动找到并使用 .venv 运行脚本;uv add 自动写入 pyproject.toml 并同步 .venv;uv sync 把 pyproject.toml 中的依赖全部装进 .venv。这个模式适合不想频繁激活,且项目已有或准备使用 pyproject.toml 的场景。

六、选择建议
如果项目还没有引入 uv,传统 python -m venv .venv 加激活命令已经够用;如果项目已有 pyproject.toml,或想利用 uv 的毫秒级创建、uv sync、uv run 等能力,可以直接使用 uv venv 加 uv sync。需要注意的是,uv 创建的仍是标准虚拟环境,激活命令和传统方式一模一样,因此从传统方式切换到 uv 的激活成本几乎为零。把 .venv 看作结果、把 venv 和 uv 看作两种生成与管理方式,就不容易混淆目录名和工具职责。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-9-10 13:29 , Processed in 0.020945 second(s), 17 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部