Python内置venv虚拟环境工具的使用完全指南

 更新时间:2025年12月30日 09:29:13   作者:40324073  
venv 是 Python 3.3 + 自带的内置虚拟环境工具,无需额外安装,核心作用是为不同 Python 项目创建隔离的运行环境,下面详细讲解它的创建、查看、激活、退出等核心操作,有需要的可以了解下

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

一、前提准备

确保你的系统已安装 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 安装的包,优先级高于继承的系统全局包(即若虚拟环境和系统全局安装了同一包的不同版本,会优先使用虚拟环境中的版本);
  • 兼容性风险:若系统全局包版本与项目需求冲突,可能导致项目报错,此时建议使用基础隔离模式创建虚拟环境,单独安装适配版本的依赖。

2. 查看虚拟环境

核心逻辑: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/

3. 激活虚拟环境

激活后,终端会显示虚拟环境名称前缀(如 (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  # 列出虚拟环境中的所有包(含继承的系统包和后续安装的包)

4. 退出虚拟环境

命令(所有系统通用):在已激活虚拟环境的终端中,直接输入以下命令,无需额外参数:

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)

四、核心总结

操作命令格式关键说明
基础隔离模式创建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 参数则为大型依赖复用提供了便捷方案,可根据项目需求灵活选择~

到此这篇关于Python内置venv虚拟环境工具的使用完全指南的文章就介绍到这了,更多相关Python venv虚拟环境内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python 如何展开嵌套的序列

    Python 如何展开嵌套的序列

    这篇文章主要介绍了Python 如何展开嵌套的序列,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-08-08
  • Python列表对象实现原理详解

    Python列表对象实现原理详解

    这篇文章主要介绍了Python列表对象实现原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • Python 实现图像特效中的油画效果

    Python 实现图像特效中的油画效果

    这篇文章主要是为大家简单介绍一下图像添加油画特效的基本原理以及代码实现,文中的示例代码很详细,对我们学习或者工作有一点的价值,感兴趣的小伙伴可以了解一下
    2021-12-12
  • Python德劳内三角剖分详解

    Python德劳内三角剖分详解

    这篇文章主要为大家详细介绍了Python中德劳内三角剖分的相关知识,文中的示例代码讲解详细,具有一定的学习价值,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-04-04
  • pytorch排查loss值出现nan的情况及解决

    pytorch排查loss值出现nan的情况及解决

    在实验室训练中,损失值出现nan是因条件筛选导致空列表,触发torch.log()错误,通过包裹训练代码快速定位问题,最终解决方案是添加1e-7常量确保数值稳定性,避免计算异常
    2025-09-09
  • python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例

    python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例

    这篇文章主要介绍了python GUI库图形界面开发PyQt5树形结构控件QTreeWidget详细使用方法与实例,需要的朋友可以参考下
    2020-03-03
  • Python实现文件压缩和解压的示例代码

    Python实现文件压缩和解压的示例代码

    这篇文章主要介绍了Python实现文件压缩和解压的方法,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-08-08
  • Python&Matlab实现蚂蚁群算法求解最短路径问题的示例

    Python&Matlab实现蚂蚁群算法求解最短路径问题的示例

    本文主要介绍了Python&Matlab实现蚂蚁群算法求解最短路径问题的示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • jenkins配置python脚本定时任务过程图解

    jenkins配置python脚本定时任务过程图解

    这篇文章主要介绍了jekins配置python脚本定时任务过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • 快速掌握python权限功能设计实战指南

    快速掌握python权限功能设计实战指南

    在处理权限控制时,装饰器能帮助我们以一种统一且简洁的方式管理不同用户对系统资源的访问权限,本文将通过几个简单的示例逐步展示如何利用Python装饰器实现从基础到复杂的权限控制功能
    2024-01-01

最新评论