Python 自带虚拟环境(venv)使用介绍 Python 自带虚拟环境venv使用介绍一、Python 虚拟环境 venv是啥Python 虚拟环境 venvvirtual environment是 Python 自带的一套轻量隔离环境核心模块就是 venv——venv 是从 Python3.3 起自带内置模块不需要 pip 安装跨平台Windows/macOS/Linux。它会为单独一个项目创建一套独立的 Python 运行环境 包含独立的 pip、独立的第三方包存放目录site-packages。Linux/macOS使用软链接指向基础 PythonWindows生成重定向启动器两者都不会完整复制整套 Python 本体共用电脑上原版 Python占用空间很小。一句话通俗理解 虚拟环境就是给每个项目单独隔出来的 “小房间”房间里装的包只属于这个项目互不打扰。❗ 它不是虚拟机、不是 Docker不是独立操作系统只是包层面隔离非常轻。虚拟环境本质就是一个个独立文件夹.venv、env1、env2。 切换 退出当前环境 → 进入另一个项目目录 → 激活另一个环境。二、venv 有什么作用解决包版本冲突最核心作用举个典型场景项目 1开发老爬虫需要第三方包 requests2.20.0旧版本项目 2新接口服务需要第三方包 requests2.31.0新版本不同项目可以使用不同组合的包依赖。如果不用虚拟环境所有项目共用电脑上全局 Python 环境所有项目共用同一套包。 你装新版本老项目直接报错装回旧版本新项目又无法运行。分开环境不会出现 “为了跑项目 2装一大堆项目 2 根本用不上的库”。虚拟环境的作用给每个项目单独 “隔离一套 Python 环境”。 每个虚拟环境拥有独立的执行入口共用底层基础 Python 解释器本体独立的 site-packages存放 pip 安装的第三方包独立的 pip不同虚拟环境之间互不干扰A 装什么包完全不影响 B。一句话总结一个项目配一个虚拟环境包版本隔离避免版本冲突。⚠️ 误区虚拟环境不是虚拟机不是 Docker只是 Python 层面的包隔离轻量、启动快。注意venv 只能管理包不能管理 Python 解释器版本如果你想要切换不同大版本 Python3.10/3.12venv 做不到这时候要用第三方工具 pyenv一般情况下不需要 pyenv因此本文不介绍 pyenv。三、如何使用 venv1.创建虚拟环境打开终端CMD/PowerShell/ 终端进入你的项目文件夹。 先 cd 进入你的项目文件夹cd D:\code\my_demo创建虚拟环境语法python -m venv 环境文件夹名例如python -m venv .venv.venv是约定俗成的名字。在 Linux/macOS 上点开头文件默认隐藏Windows 资源管理器默认不隐藏但作为约定名称仍被广泛使用。你也可以叫 env、venv。执行完项目目录下多出 .venv 文件夹里面就是整套隔离环境。提示把 .venv 放到项目根目录不要把.venv提交版本控制应加入.gitignore文件。2.激活虚拟环境激活才会切到隔离环境激活之后终端提示符前面一般会出现 (.venv) 标记代表当前在虚拟环境里。说明 venv 创建环境时自动生成对应的激活脚本。activate.bat → CMD命令提示符用Activate.ps1 → PowerShell 用后缀 ps1 是 PowerShell 脚本activate → 是给 Linux/macOS 用的 shell 脚本Windows 不用Windows 激活命令要激活虚拟环境时需要先用cd命令切换到它所在的目录如cd /d D:\code\my_demo。在 CMD 中.venv\Scripts\activate.bat在 PowerShell 中.venv\Scripts\Activate.ps1若 PowerShell 报“禁止运行脚本”最轻量的做法是临时放行当前终端不改动系统长期设置Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass执行后仅当前这个 PowerShell 窗口允许运行脚本关闭窗口即自动恢复原策略。如果你希望当前用户永久允许本地脚本不用每次开窗口都设一遍可以改用Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser这一步不需要管理员权限普通 PowerShell 窗口即可执行输入 Y 确认后立即生效且仅影响当前用户账户。备选如果不想改动任何执行策略直接在 CMD 中运行 .venv\Scripts\activate.bat 即可无需处理 PowerShell 策略。3.在激活状态下安装包激活之后pip install 安装的包只会装在 .venv 里面不会跑到全局pip install requests pandas查看当前环境安装了哪些包pip list导出依赖清单非常重要分享项目给别人用pip freeze requirements.txt注意pip freeze 会同时导出手动安装的包以及自动安装的间接依赖。生成的 requirements.txt 记录所有包 精确版本别人拿到项目可以一键安装相同依赖pip install -r requirements.txt4.退出虚拟环境不管哪个系统命令都一样deactivate退出后 (.venv) 标记消失回到全局 Python 环境。5.删除虚拟环境虚拟环境就是一个文件夹直接删掉.venv文件夹就等于删除环境。删除前注意先执行deactivate退出环境并关闭所有引用该环境的终端 / IDE 窗口确认无进程占用后再删除。若删除失败通常是文件被占用关闭相关进程后重试即可。6.直接启动 venv 内部 IDLEidle.exe这样做的意义在于让 python 的 IDLE 使用 venv 虚拟环境的依赖包——让 python 的 IDLE 使用 venv 虚拟环境的依赖包也即是 import 包加载的就是这个 venv 的 site-packages。这样使用 python 的 IDLE 修改 py 源码、运行测试就可以使用虚拟环境的依赖包。特别提示千万不要直接在开始菜单点开系统自带的 IDLE 它绑定的是全局 Python哪怕你的 py 文件放在有 .venv 的文件夹里它看不见虚拟环境的包。 IDLE 不会自动探测同级目录的 .venv没有自动加载虚拟环境的能力这一点和 VS Code 不一样。要达到此目的 —— 让 python 的 IDLE 使用 venv 虚拟环境的依赖包正确方式先用 cd /d 切换到虚拟环境所在的项目根目录cd /d D:\code\my_demo然后激活虚拟环境.venv\Scripts\activate.bat再执行命令python -m idlelib如此启动的 IDLE使用的是虚拟环境的 site-packages。补充说明python -m idlelib 与 python -m idlelib.idle 效果相同都是正确的启动方式选一种用即可。校验是否生效在 IDLE Shell 输入import sysprint(sys.executable)如下图特别提示如果想换用另一个虚拟环境的依赖包必须关掉当前的 IDLE并在另一个虚拟环境的终端中重新执行 python -m idlelib 启动。同一个 IDLE 窗口无法切换虚拟环境。7.虚拟环境中打包成可执行 exe文件作用把你的 .py 代码 虚拟环境里的依赖打包成 exe发给没有装 Python 的电脑直接双击运行。先用cd命令切换到虚拟环境所在的目录如cd /d D:\code\my_demo之后步骤1. 激活虚拟环境必须这样 pyinstaller 拿到的是本项目依赖否则容易混入全局库.venv\Scripts\activate.bat2. 在虚拟环境内安装 pyinstallerpip install pyinstaller3. 执行打包命令例如短参数版推荐简洁pyinstaller -F -w -i icon.ico main.py长参数版可读性好pyinstaller --onefile --windowed --iconicon.ico main.py打包完成产物运行结束后生成 3 个目录 / 文件build/打包中间缓存可随时删除下次打包自动重建。dist/最终打包好的 exe 在这里这是要发给别人的成品请保留。把dist\main.exe发给别人即可-F单文件模式。main.spec打包配置脚本可保留下次直接pyinstaller main.spec可复现参数也可删除。