跳转至

2023-08 虚拟环境工作流演示

内容梗概

本课是一次完整的实战演示:以一个开源的实时换脸(deepfake)项目为例,演示"从 GitHub 拿到一个开源项目到在本机跑起来"的标准工作流——下载代码、读说明文档(requirements)、用 conda 创建指定版本的虚拟环境、读并修改项目自带的安装批处理脚本(install_windows.bat)、安装依赖、放置模型权重文件。过程中穿插讲解了 conda install 与 pip install 的区别(预编译 vs 源代码编译)、conda 的 channel(-c 参数)与换源机制、pip install -r requirements.txt 的用法,以及脚本相对路径带来的执行目录限制。

说明:字幕为语音转写,"conda" 被大量转写为"空大","pip" 被转写为"peep",笔记已按上下文还原。

知识点详解

演示项目:开源换脸工具(约 00:00–01:01)

  • 项目效果:打开摄像头实时换脸(如换成爱因斯坦),配合 OBS 虚拟摄像头可以接入腾讯会议;本地显卡跑起来效果流畅、眼球转动真实。
  • 老师以此引出主题:对一个开源项目感兴趣,如何在自己电脑上部署运行?

标准工作流:拿到项目后的步骤(约 01:01–02:22)

  1. 获取代码:git clone 或 Code → Download ZIP(老师因没设代理选择了直接下载,并改名区分)。
  2. 进入项目目录:右键"在终端打开",或打开终端后用 cd 切换。
  3. 读说明文档:看 install instructions / requirements,确认依赖——该项目要求 Python 3.8、需要 git for windows、还需下载模型文件。
  4. 创建虚拟环境:conda create -n ay python=3.8。conda 会自动下载 Python 3.8.18 及对应的 pip 版本到本地,确认即可。

创建环境后:读输出、验证状态(约 02:22–02:59)

  • 计算机入门的表现就是"会读输出"(报错也是输出的一部分):conda 装完会提示 To activate this environment, use ...,照着做即可。
  • 激活后养成确认习惯:看提示符前小括号里的环境名是否变了;用 python -V、pip -V 确认 Python 版本(3.8)且 pip 对应该虚拟环境。

读懂项目的安装脚本(约 02:59–04:59)

  • 技巧:命令行里用 code . 可以直接用 VSCode 打开当前目录(前提是安装 VSCode 时添加了环境变量)。
  • 逐行分析 scripts\install_windows.bat(批处理文件):
  • @echo off:关闭回显,执行时不把命令本身再打印出来;
  • rem:注释;
  • 第 4 行 call conda --version + && / || 结构:检查 conda 是否安装好(&& 表示前一条命令成功才执行后面的,|| 表示失败则执行另一分支);
  • 第 5 行(被注释掉):结构上看是在判断 git 是否安装好;
  • 第 7 行:调用 scripts\settings_windows.bat;
  • 第 9 行:conda create -n xxx python=3.7 -y(-y 表示自动确认)创建环境。
  • settings_windows.bat 只做一件事:设置一个环境变量,指定 conda 环境的名字。

按实际情况修改脚本(约 04:59–10:21)

  • 把 settings 里的环境名改成自己建的 ay;
  • 发现并纠正作者的 bug:网页说明要求 3.8,脚本里却写 python=3.7,手动改成 3.8;
  • 脚本每次运行都会用 -y 重建(覆盖)环境,由于环境已手动建好,把第 9 行注释掉,避免重复创建。

conda install 与 pip install 的区别(约 10:21–13:32)

  • 脚本后续同时用了 conda 和 pip 安装包,两者都能装 Python 包,但**来源不同、下载的包内容可能有区别**(即使版本号一致):
  • pip install:从 Python 社区官方服务器(PyPI)下载,可能是源代码级别的包——下载到你的电脑后试图**本地编译**。如果电脑上没有编译环境(类似 C 语言编译时头文件找不到、环境变量错误、缺 lib),Windows 上就会报五花八门的错。
  • conda install:对不同操作系统提供**预编译好**的包,下载即用,不容易报错。
  • 所以有时 conda install 不报错而 pip install 报错;反过来如果 pip(转写如此,按语境指源代码安装)报错说找不到 cmake,说明它正在试图下载源代码在本地编译——cmake 是编译工具。
  • Python 本身提供两种安装机制:源代码级安装**和**二进制级安装(后者已帮你针对 Windows 平台编译好)。

conda 的 channel(-c 参数)与换源(约 13:32–15:53)

  • 脚本里 conda install 带 -c 参数:-c 是 channel(频道)的缩写,可理解为**不同的服务器**,由不同的热心群众维护,内容可能略有区别(如 conda-forge)。
  • 校园网装包慢时,可以把 conda 的 channels 换成**清华镜像源**(地址在国内甚至校园网内):做法是创建/编辑用户目录下的 .condarc 文件,把 channels 全部替换为清华地址。

requirements.txt 与批量安装(约 15:53–17:03)

  • 脚本后半段下载面部识别模型,并用 pip install -r requirements.txt 安装剩余依赖。
  • requirements.txt 不是包名,而是 Python 提供的**依赖清单机制**:每行格式为 包名==版本号,-r 参数让 pip 按清单把全部包装好。

脚本执行的目录限制(约 17:03–18:51)

  • 运行 .\scripts\install_windows.bat 时**必须在项目根目录下**,不能切换到别处。
  • 原因:脚本第 7 行用**相对路径**调用 scripts\settings_windows.bat,执行出发点变了就找不到这个文件。
  • 规避办法:把 settings 里的 set 语句直接复制进主脚本,就不依赖外部脚本了——但人家**模块化**做得好(设置参数单独一个 bat,调用时再调用),不建议折腾。

放置模型权重与收尾(约 19:51–结尾)

  • 按说明文档把下载好的权重文件(FOMM 库所需)复制到指定目录,之后即可运行。
  • 说明文档后面的 install OBS / virtual camera 步骤是把换脸窗口接入腾讯会议,与 Python 无关,课上不讲,有兴趣可自行尝试、出问题截图问老师。
  • 换源补充:编辑 C 盘用户目录下的 .condarc,把镜像配置复制进去;改完源后记得清缓存再测试(conda clean)。安装包体积大、等待时间长是正常现象。

示例与演示

  • 开场演示:运行换脸工具,摄像头画面实时换成爱因斯坦的脸,并说明配合 OBS 虚拟摄像头可用于腾讯会议。
  • 完整部署工作流演示(核心):
  • Download ZIP 下载项目并改名;
  • 项目目录右键"在终端打开";
  • conda create -n ay python=3.8 创建环境,读输出提示后 conda activate ay;
  • python -V / pip -V 双重确认环境状态;
  • code . 打开 VSCode,逐行解读 install_windows.bat 与 settings_windows.bat;
  • 修改环境名为 ay、Python 版本 3.7→3.8、注释掉重复建环境的第 9 行;
  • .\scripts\install_windows.bat 在项目根目录运行安装脚本(因包体积大,课堂未等其装完)。
  • 权重文件演示:把下载的 FOMM 权重文件复制到说明文档要求的目录。

重点与难点

  • 本课核心是**工作流思维**:拿到开源项目 → 读文档(requirements)→ 建对应版本的虚拟环境 → 激活并验证 → 装依赖 → 按文档放权重/数据 → 运行。
  • **会读输出**是计算机入门的基本功,conda 每一步都会给出下一步提示(如 activate 命令)。
  • 不要盲目跑脚本:先读懂它在干什么(echo off、rem、&&/||、相对路径调用),再按自己环境修改(环境名、Python 版本、注释掉已完成的步骤)。
  • 带 -y 的 conda create 会**覆盖同名环境**,重复执行脚本有风险。
  • 脚本内含相对路径调用时,必须保证**执行目录**正确,否则报找不到文件。
  • pip(源码编译,易报错)与 conda(预编译,省心)的差异,是装包报错时换工具试试的依据;报"找不到 cmake"说明正在本地编译源代码。
  • 装包慢/超时的对策:换清华源(改 .condarc),改完**清缓存**再测。

关联内容

  • 直接应用上一课 2023-07 的 conda 知识(create/activate/-V/env list),是虚拟环境知识的实战落地。
  • 批处理(bat)解读呼应"计算机维护/权益维护"类前置课程的内容;相对路径与 2023-06 模块与包中的相对导入概念相通。
  • 涉及正课第 10 章:10.3 国内镜像源(清华源)、10.4 离线安装与 whl 文件、10.5 虚拟环境管理。
  • 下一课 2023-09"包管理器补充"将进一步讲解 pip/conda 装包背后的完整流程与报错分析。