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引用和匿名函数,实例分析了Python中返回一个返回值与多个返回值的方法,需要的朋友可以参考下
    2021-10-10
  • Python迭代器与生成器基本用法分析

    Python迭代器与生成器基本用法分析

    这篇文章主要介绍了Python迭代器与生成器基本用法,结合实例形式分析了Python迭代器与生成器的基本功能、定义及使用方法,需要的朋友可以参考下
    2018-07-07
  • python opencv 直方图反向投影的方法

    python opencv 直方图反向投影的方法

    这篇文章主要介绍了python opencv 直方图反向投影的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • 详解Selenium+PhantomJS+python简单实现爬虫的功能

    详解Selenium+PhantomJS+python简单实现爬虫的功能

    这篇文章主要介绍了详解Selenium+PhantomJS+python简单实现爬虫的功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • 基于Python编写一个图片批量修改尺寸工具

    基于Python编写一个图片批量修改尺寸工具

    在日常办公和内容创作中,我们经常需要批量处理大量图片尺寸,今天我要分享一个用Python开发的图片批量修改尺寸工具,它能帮你轻松解决这个问题
    2025-09-09
  • Python的Flask框架中web表单的教程

    Python的Flask框架中web表单的教程

    这篇文章主要介绍了Python的Flask框架中web表单的教程,表单是学习各个web框架中的基础知识,需要的朋友可以参考下
    2015-04-04
  • Python梯度提升库XGBoost解决机器学习问题使用探究

    Python梯度提升库XGBoost解决机器学习问题使用探究

    XGBoost是一个流行的梯度提升库,特别适用于解决各种机器学习问题,它在性能和速度上表现出色,常被用于分类、回归、排序、推荐系统等应用,本文将介绍XGBoost的基本原理、核心功能以及一些详细的示例代码
    2024-01-01
  • Python中的字典遍历备忘

    Python中的字典遍历备忘

    这篇文章主要介绍了Python中的字典遍历备忘,本文列举了多种字典遍历方法,适合初学者查看,并简单讲解了interitems和iterms区别,需要的朋友可以参考下
    2015-01-01
  • paramiko模块安装和使用(远程登录服务器)

    paramiko模块安装和使用(远程登录服务器)

    paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接,下面学习一下它的使用方法
    2014-01-01
  • Python和Bash结合在一起的方法

    Python和Bash结合在一起的方法

    这篇文章主要介绍了Python和Bash结合在一起的方法,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-11-11

最新评论