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处理excel绘制雷达图

    python处理excel绘制雷达图

    这篇文章主要为大家介绍了python处理excel绘制雷达图的相关方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • python glom模块的使用简介

    python glom模块的使用简介

    这篇文章主要介绍了python glom模块的使用简介,帮助大家更好的利用python处理数据,感兴趣的朋友可以了解下
    2021-04-04
  • 详解Python并发编程之从性能角度来初探并发编程

    详解Python并发编程之从性能角度来初探并发编程

    这篇文章主要介绍了详解Python并发编程之从性能角度来初探并发编程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Pycharm关于远程JupyterLab以及JupyterHub登录问题

    Pycharm关于远程JupyterLab以及JupyterHub登录问题

    这篇文章主要介绍了Pycharm关于远程JupyterLab以及JupyterHub登录问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Python中的常见数据集打乱方法

    Python中的常见数据集打乱方法

    这篇文章主要介绍了Python中的常见数据集打乱方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • OpenCV读取中文路径图像失败的问题解决方法总结

    OpenCV读取中文路径图像失败的问题解决方法总结

    这篇文章主要为大家详细介绍了OpenCV读取中文路径图像失败的问题的核心概念与实践方法,掌握关键技术要点,了解实际应用场景与最佳实践
    2026-05-05
  • python爬虫开发之selenium模块详细使用方法与实例全解

    python爬虫开发之selenium模块详细使用方法与实例全解

    这篇文章主要介绍了python爬虫开发之selenium模块详细使用方法与实例全解,selenium模块详细在爬虫开发中主要用来解决JavaScript渲染问题需要的朋友可以参考下
    2020-03-03
  • pytorch执行报错cuda版本不匹配

    pytorch执行报错cuda版本不匹配

    本文主要介绍了pytorch执行报错cuda版本不匹配,可能包括CUDA驱动程序、CUDA工具包、PyTorch版本、GPU占用、硬件问题等,并提供了检查和解决方法,感兴趣的可以了解一下
    2026-04-04
  • Python进程间通信 multiProcessing Queue队列实现详解

    Python进程间通信 multiProcessing Queue队列实现详解

    这篇文章主要介绍了python进程间通信 mulitiProcessing Queue队列实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • python对批量WAV音频进行等长分割的方法实现

    python对批量WAV音频进行等长分割的方法实现

    这篇文章主要介绍了python对批量WAV音频进行等长分割的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09

最新评论