跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python

Python venv 虚拟环境工具使用指南及 uv 升级教程

Python venv 是 Python 3.3+ 内置的虚拟环境工具,用于隔离项目依赖避免冲突。 venv 的创建、激活、退出及删除操作,涵盖 Linux、macOS 和 Windows 系统差异。同时介绍基于 Rust 开发的 uv 工具,它兼容 venv 逻辑且性能提升显著,支持依赖锁定与高性能包管理。通过对比分析,建议简单项目使用 venv,中大型或团队协作场景优先选用 uv 以获得更高效率。

小熊软糖发布于 2026/1/8更新于 2026/9/665 浏览

venv 是 Python 3.3+ 自带的内置虚拟环境工具,无需额外安装,核心作用是为不同 Python 项目创建隔离的运行环境,避免依赖包版本冲突。下面详细讲解它的创建、查看、激活、退出等核心操作,同时覆盖不同系统的差异。

一、venv 核心使用教程

(一)前提准备

确保你的系统已安装 Python 3.3+(可通过 python3 --version 或 python --version 验证)。部分 Linux 系统(如 Ubuntu)默认未安装 venv 模块,需先执行以下命令安装依赖:

# Ubuntu/Debian 系列
sudo apt update && sudo apt install -y python3-venv
(二)核心操作详解
  1. 创建虚拟环境

(1)基础创建(默认隔离模式) 命令格式:

# 基础命令:在当前目录创建名为【环境名】的虚拟环境(默认不继承系统全局包)
python3 -m venv 环境名

示例:

# 创建名为 my_project_venv 的虚拟环境(隔离模式)
python3 -m venv my_project_venv

说明:执行命令后,当前目录会生成与'环境名'同名的文件夹,包含 Python 解释器、pip 工具、依赖包存储目录等。默认情况下,虚拟环境是完全隔离的,不会使用系统全局安装的 Python 包,所有依赖需重新通过 pip 安装。

若系统存在多个 Python 版本(如 Python3.8、Python3.10),可指定具体版本创建:

python3.8 -m venv my_project_venv_38 # 使用 Python3.8 创建虚拟环境
python3.10 -m venv my_project_venv_310 # 使用 Python3.10 创建虚拟环境

(2)带 --system-site-packages 参数创建(继承系统全局包) 参数含义:--system-site-packages 是 venv 的核心可选参数,作用是让创建的虚拟环境继承系统全局 Python 环境中已安装的包(如系统全局安装的 numpy、tensorflow 等),避免重复下载大型依赖包,节省磁盘空间和时间。

适用场景:

  • 系统已全局安装某个大型库(如深度学习框架、科学计算库),多个项目需共用该库,无需重复安装;
  • 部分库依赖系统底层环境(如硬件驱动相关包),全局安装后需在虚拟环境中直接使用。

命令格式与示例:

# 带系统包继承的创建命令
python3 -m venv --system-site-packages 环境名
# 示例:创建继承系统全局包的虚拟环境(命名建议带标识,方便区分)
python3 -m venv --system-site-packages my_project_venv_with_global

关键注意事项:

  • 继承时机:仅在虚拟环境创建时同步系统全局包,后续在系统全局安装的新包,不会自动同步到已创建的虚拟环境(需重新创建或手动在虚拟环境中安装);
  • 版本优先级:虚拟环境中通过 pip 安装的包,优先级高于继承的系统全局包(即若虚拟环境和系统全局安装了同一包的不同版本,会优先使用虚拟环境中的版本);
  • 兼容性风险:若系统全局包版本与项目需求冲突,可能导致项目报错,此时建议使用基础隔离模式创建虚拟环境,单独安装适配版本的依赖。
  1. 查看虚拟环境 核心逻辑:venv 创建的虚拟环境本质是普通文件夹,没有专属的查询命令,需通过系统的文件查询指令查看。

不同系统操作:

系统类型查看命令说明
Linux/macOSls 目录路径(默认当前目录直接输入 ls)列出指定目录下的文件夹,虚拟环境文件夹即为已创建的环境(如 my_project_venv)
Windows(CMD)dir 目录路径(默认当前目录直接输入 dir)列出当前目录下的文件夹 / 文件,可见虚拟环境文件夹
Windows(PowerShell)Get-ChildItem(简写 gci)效果同 dir,更简洁的 PowerShell 指令

示例(Linux/macOS):

# 查看当前目录下的虚拟环境
ls
# 输出:my_project_venv my_project_venv_with_global(两个虚拟环境文件夹)
# 查看指定目录下的虚拟环境(如~/projects/venvs/)
ls ~/projects/venvs/
  1. 激活虚拟环境 激活后,终端会显示虚拟环境名称前缀(如 (my_project_venv)),此时通过 pip 安装的依赖会仅存于该环境(继承模式下,新增依赖仍安装在虚拟环境内,不影响系统全局)。

不同系统激活命令:

系统类型激活命令
Linux/macOSsource 环境名/bin/activate(示例:source my_project_venv_with_global/bin/activate)
Windows(CMD)环境名\Scripts\activate.bat(示例:my_project_venv_with_global\Scripts\activate.bat)
Windows(PowerShell).\环境名\Scripts\Activate.ps1(示例:.\my_project_venv_with_global\Scripts\Activate.ps1)

激活成功标识:终端前缀会新增(环境名),例如:

  • Linux/macOS:(my_project_venv_with_global) user@localhost:~$
  • Windows:(my_project_venv_with_global) C:\Users\XXX\>

验证激活状态(可选):

# 查看当前 Python 路径(指向虚拟环境内的 Python 解释器)
which python3 # Linux/macOS
where python # Windows
# 查看当前 pip 路径(指向虚拟环境内的 pip)
which pip3 # Linux/macOS
where pip # Windows
# 验证继承的系统包(继承模式下执行,可看到系统全局安装的包)
pip list # 列出虚拟环境中的所有包(含继承的系统包和后续安装的包)
  1. 退出虚拟环境 命令(所有系统通用):在已激活虚拟环境的终端中,直接输入以下命令,无需额外参数:
deactivate

退出成功标识:终端前缀的(环境名)消失,恢复到系统默认终端样式,此时操作会回到系统全局 Python 环境。

(三)补充操作:删除虚拟环境

venv 虚拟环境是普通文件夹,直接删除对应文件夹即可(删除后不可恢复,需谨慎操作):

系统类型删除命令 / 操作
Linux/macOSrm -rf 环境名(示例:rm -rf my_project_venv_with_global)
Windows手动删除环境文件夹,或在 CMD/PowerShell 中执行 rd /s/q 环境名(示例:rd /s/q my_project_venv_with_global)
(四)venv 核心总结
操作命令格式关键说明
基础隔离模式创建python3 -m venv 环境名完全隔离系统全局包,依赖需重新安装,无版本冲突风险
继承系统包创建python3 -m venv --system-site-packages 环境名继承系统全局包,节省空间,注意版本兼容性
激活虚拟环境按系统选择对应命令(如 Linux:source 环境名/bin/activate)激活后终端带环境名前缀,操作仅作用于当前环境
退出虚拟环境deactivate所有系统通用,退出后回到全局 Python 环境
查看虚拟环境ls(Linux/macOS)/ dir(Windows)虚拟环境本质是文件夹,通过系统命令查看
删除虚拟环境rm -rf 环境名(Linux/macOS)/rd/s/q 环境名(Windows)直接删除文件夹,需先退出虚拟环境,删除后不可恢复

venv 轻量、无额外依赖,是简单 Python 项目环境隔离的首选工具。基础隔离模式适合大多数场景,--system-site-packages 参数则为大型依赖复用提供了便捷方案,可根据项目需求灵活选择~


二、uv 包管理工具使用教程(兼容 venv,性能翻倍)

uv 是基于 Rust 开发的现代化 Python 环境 + 包管理工具,一站式整合「虚拟环境管理 + 高性能包安装 + 依赖解析 + 依赖锁定」功能,完全兼容 venv 的所有操作逻辑,且速度是 venv+pip 组合的 10~100 倍。对于中大型项目、团队协作或追求开发效率的场景,uv 是 venv 的最优升级替代方案。

(一)前提准备:安装 uv

uv 需手动安装,但安装过程极简,支持所有系统和架构(包括 ARM64 架构如 Jetson 设备):

系统类型安装命令补充说明
Linux/macOS(含 ARM64)curl -LsSf https://astral.sh/uv/install.shsh 官方推荐,一键安装二进制文件,无依赖
Windows(PowerShell)irm https://astral.sh/uv/install.ps1iex 官方推荐,自动配置环境变量
所有系统(通用)python3 -m pip install uv --user兼容现有 Python 环境

临时使用清华镜像源安装 uv(推荐):

python3 -m pip install uv --user -i https://pypi.tuna.tsinghua.edu.cn/simple

若清华源不行,换阿里云镜像源:

# python3 -m pip install uv --user -i https://mirrors.aliyun.com/pypi/simple/

安装验证:重启终端后执行以下命令,输出版本号即安装成功:

uv --version
(二)核心操作详解(与 venv 无缝兼容,零学习成本)

uv 的虚拟环境操作逻辑与 venv 完全一致,核心命令仅将 python3 -m venv 替换为 uv venv,激活、退出、查看、删除命令与 venv 完全相同,无需记忆新指令。

  1. 创建虚拟环境

(1)基础创建(默认隔离模式) 命令格式:

# 基础命令:在当前目录创建名为【环境名】的虚拟环境(默认不继承系统全局包)
uv venv 环境名

示例:

# 创建名为 my_project_uv 的虚拟环境(隔离模式,与 venv 目录结构一致)
uv venv my_project_uv

说明:uv 创建的虚拟环境文件夹与 venv 完全相同,包含 Python 解释器、pip 工具(可直接用 uv pip 替代),默认隔离系统全局包。

若系统存在多个 Python 版本,可指定具体版本创建:

uv venv --python python3.8 my_project_uv_38 # 使用 Python3.8 创建虚拟环境
uv venv --python python3.10 my_project_uv_310 # 使用 Python3.10 创建虚拟环境

(2)带 --system-site-packages 参数创建(继承系统全局包) uv 完全支持 venv 的 --system-site-packages 参数,作用和适用场景与 venv 一致,完美复用系统全局大型依赖包:命令格式与示例:

# 带系统包继承的创建命令(与 venv 参数完全一致)
uv venv --system-site-packages 环境名
# 示例:创建继承系统全局包的 uv 虚拟环境
uv venv --system-site-packages my_project_uv_with_global

关键注意事项:与 venv 完全相同,仅在创建时同步系统包,虚拟环境内安装的包优先级高于继承的系统包。

  1. 查看虚拟环境 与 venv 完全一致!uv 创建的虚拟环境本质也是普通文件夹,通过系统命令 ls(Linux/macOS)、dir(Windows CMD)、Get-ChildItem(Windows PowerShell)查看即可。

  2. 激活虚拟环境命令与 venv 完全相同! 无需修改任何操作习惯,激活后终端前缀同样显示环境名:示例(Linux/macOS):

# 激活 uv 创建的虚拟环境(命令与 venv 一致)
source my_project_uv_with_global/bin/activate

激活成功标识、验证方法与 venv 完全一致,可通过 which python3 或 pip list 验证。

  1. 退出虚拟环境命令与 venv 完全相同! 所有系统通用:
deactivate
(三)补充操作:删除虚拟环境

与 venv 完全一致!uv 虚拟环境也是普通文件夹,直接删除对应文件夹即可:示例(Linux/macOS):

rm -rf my_project_uv_with_global
(四)uv 专属亮点:一站式高性能包管理(uv pip)

uv 的核心优势在于内置高性能 pip 替代工具 uv pip,完全兼容 pip 的所有参数和用法,且速度提升 10~50 倍,支持依赖锁定、并行安装、智能依赖解析等高级功能。

  1. 基础包安装(兼容 pip 所有命令) 将 pip 替换为 uv pip 即可,无需修改任何参数:
# 安装单个包
uv pip install requests
# 安装指定版本包
uv pip install pandas==2.1.0
# 从 requirements.txt 安装依赖
uv pip install -r requirements.txt
# 安装私有源包
uv pip install -i https://pypi.tuna.tsinghua.edu.cn/simple torch
  1. 依赖锁定(团队协作必备) uv 支持生成规范的锁文件 uv.lock,记录完整依赖树和版本信息,确保团队所有成员环境一致:
# 从 requirements.txt 生成锁文件
uv pip compile requirements.txt -o uv.lock
# 基于锁文件安装依赖(确保环境 100% 一致)
uv pip sync uv.lock
  1. 性能优势 在相同环境下,uv pip install 安装依赖的速度远快于 pip install,尤其是大型包或多依赖项目:
  • 安装 Pandas 等大型科学计算包:速度提升 10~20 倍;
  • 解析复杂依赖树(如 100+ 子依赖):速度提升 100+ 倍;
  • 团队协作同步环境:基于锁文件的 uv pip sync 比 pip install -r 快 5~10 倍。

三、venv vs uv 核心对比表

对比维度venvuv
核心定位Python 内置纯虚拟环境工具,无包管理能力一站式环境 + 包管理工具,整合虚拟环境、包安装、依赖解析、锁定
安装要求Python 3.3+ 内置,无需安装(部分 Linux 需装 python3-venv)需手动安装,支持所有系统和架构,安装极简
创建命令(基础隔离模式)python3 -m venv 环境名uv venv 环境名
创建命令(继承系统包)python3 -m venv --system-site-packages 环境名uv venv --system-site-packages 环境名
激活命令按系统选择对应命令(如 Linux:source 环境名/bin/activate)与 venv 完全相同
退出命令deactivate(通用)与 venv 完全相同
查看 / 删除方式系统文件命令(ls/rm -rf 等)与 venv 完全相同
包管理能力无,需搭配 pip 使用内置 uv pip,完全兼容 pip,支持依赖锁定、并行安装
性能表现依赖 pip,速度一般,复杂依赖解析慢Rust 编译,速度是 venv+pip 的 10~100 倍,依赖解析秒级完成
依赖锁定仅支持 pip freeze > requirements.txt(简陋快照)支持生成规范 uv.lock 锁文件,团队协作环境一致
系统兼容性完美支持所有系统,无架构限制完美支持所有系统和架构(包括 ARM64/Jetson)
学习成本低,仅需掌握基础环境操作极低,兼容 venv 所有操作,仅需额外掌握 uv pip 命令
适用场景1. 离线环境无网络安装第三方工具;2. 简单小项目,仅需环境隔离;3. 追求零安装、零风险的极简需求1. 中大型项目、深度学习 / 科学计算等多依赖场景;2. 团队协作项目,需要环境一致性;3. 追求极致开发效率,频繁安装 / 更新依赖;4. 所有 venv 适用场景(无缝替代)

四、最终选型建议

  1. 选 venv 的场景:
    • 设备无网络,无法安装 uv;
    • 仅需简单环境隔离,项目依赖极少;
    • 追求绝对零安装、零风险,无需高级包管理功能。
  2. 选 uv 的场景:
    • 中大型项目、多依赖项目(如深度学习、Web 开发);
    • 团队协作,需要环境一致性和依赖锁定;
    • 频繁安装 / 更新依赖,追求开发效率;
    • 所有 venv 适用场景(uv 可无缝替代,且体验更优)。
  3. 终极建议:可先通过 venv 理解虚拟环境的核心概念,掌握后立即切换到 uv——uv 完全兼容 venv 的操作逻辑,无需额外学习成本,却能带来性能和功能的双重提升,是现代 Python 开发的首选工具!

目录

  1. 一、venv 核心使用教程
  2. (一)前提准备
  3. Ubuntu/Debian 系列
  4. (二)核心操作详解
  5. 基础命令:在当前目录创建名为【环境名】的虚拟环境(默认不继承系统全局包)
  6. 创建名为 myprojectvenv 的虚拟环境(隔离模式)
  7. 带系统包继承的创建命令
  8. 示例:创建继承系统全局包的虚拟环境(命名建议带标识,方便区分)
  9. 查看当前目录下的虚拟环境
  10. 输出:myprojectvenv myprojectvenvwithglobal(两个虚拟环境文件夹)
  11. 查看指定目录下的虚拟环境(如~/projects/venvs/)
  12. 查看当前 Python 路径(指向虚拟环境内的 Python 解释器)
  13. 查看当前 pip 路径(指向虚拟环境内的 pip)
  14. 验证继承的系统包(继承模式下执行,可看到系统全局安装的包)
  15. (三)补充操作:删除虚拟环境
  16. (四)venv 核心总结
  17. 二、uv 包管理工具使用教程(兼容 venv,性能翻倍)
  18. (一)前提准备:安装 uv
  19. python3 -m pip install uv --user -i https://mirrors.aliyun.com/pypi/simple/
  20. (二)核心操作详解(与 venv 无缝兼容,零学习成本)
  21. 基础命令:在当前目录创建名为【环境名】的虚拟环境(默认不继承系统全局包)
  22. 创建名为 myprojectuv 的虚拟环境(隔离模式,与 venv 目录结构一致)
  23. 带系统包继承的创建命令(与 venv 参数完全一致)
  24. 示例:创建继承系统全局包的 uv 虚拟环境
  25. 激活 uv 创建的虚拟环境(命令与 venv 一致)
  26. (三)补充操作:删除虚拟环境
  27. (四)uv 专属亮点:一站式高性能包管理(uv pip)
  28. 安装单个包
  29. 安装指定版本包
  30. 从 requirements.txt 安装依赖
  31. 安装私有源包
  32. 从 requirements.txt 生成锁文件
  33. 基于锁文件安装依赖(确保环境 100% 一致)
  34. 三、venv vs uv 核心对比表
  35. 四、最终选型建议

更多推荐文章

查看全部
  • 35 岁程序员失业危机:现状分析与破局策略
  • 民用无人机新规 2026 年 5 月实施 实名登记与激活双重要求
  • Python 异步编程与协程实战指南
  • GitHub 学生认证与 PyCharm Copilot 配置全流程指南
  • RTX 4090 加速国产 AIGC 视频生成:腾讯混元与阿里通义万相部署
  • AR 技术在电力配电中的应用:带电作业解决方案
  • Android 广域网 P2P 语音聊天实战:WebRTC 与 NAT 穿透技术解析
  • Web Worker:前端多线程并行计算实战
  • 算法空间复杂度详解:概念与计算实例
  • 向量数据库选型指南:主流方案对比与 Qdrant 推荐
  • Docker 私有化部署 Coze 应用实战指南
  • 宇树 G1 机器人强化学习训练环境搭建与奖励函数解析
  • AIGC 时代:为何 AI 文本检测已成为刚需?
  • CarelessWhisper: 将 Whisper 改造为因果流式语音识别模型
  • Java 虚拟线程:Project Loom 并发模型原理与高并发实践
  • Xcode 原生集成 AI 大模型配置与使用指南
  • OpenClaw Java:基于 Spring Boot 的 AI Agent Gateway 全栈实践
  • C++ 实现 JSON 与 HTTP 协议:从零构建 Web 计算器服务器
  • Higress 将 REST API 转换为 MCP Server 工具配置指南
  • 基于 OpenClaw 与飞书开放平台实现 AI 新闻推送机器人

相关免费在线工具

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online