2023-07 Conda 虚拟环境¶
内容梗概¶
本课系统讲解用 conda 管理虚拟环境。老师先说明为什么从之前的 pipenv 方案全面转向 conda:pipenv 无法脱离宿主 Python 版本的限制,而 conda 可以创建任意 Python 版本的独立环境。随后梳理了 Anaconda → Miniconda 的演进关系(用画图方式拆解 conda、Python 环境、预装包三者的组合关系),并给出 conda 在 Windows 上的完整配置流程(环境变量 + conda init)。最后以 autocut、stable-diffusion-webui 等真实 AI 项目为例,演示 conda env list、conda create -n 名字 python=版本、激活环境、用 python -V 和 conda list 验证环境状态,并实地查看虚拟环境中的 site-packages 目录。
说明:字幕为语音转写,"conda"与"pipenv"在转写中有混淆(如"空大""PPENV"等)。按上下文判断,老师早期视频讲的是 pipenv,本课转向 conda。
知识点详解¶
为什么需要虚拟环境、为什么选 conda(约 00:00–02:46)¶
- 实际项目都不是从头写的,都依赖第三方库;一台机器上会有很多不同项目,依赖各不相同,因此需要虚拟环境做隔离。
- 老师早前视频讲的是 pipenv 这类虚拟环境管理机制(它本身是 Python 的一个第三方包),现在全面转向 conda。
- 原因:pipenv 不能脱离 Python 自身版本的限制。 举例:你装了 Python 3.11,pipenv 属于 3.11 这个环境下的一个包;如果网上某个项目要求 Python 3.7,pipenv 没法跳出 3.11 再给你整一个 3.7 的环境,实现起来非常麻烦。
Anaconda 与 Miniconda 的关系(约 02:47–08:08)¶
- 最早出现的是 Anaconda:面向科学计算用户(数据分析师、科研人员等,计算机不太熟但要用 Python 做计算,比 R、MATLAB 更好工程化)。
- Anaconda = conda 包管理器 + 自带的 Python 环境(如 py3.11)+ 预装好的大量科学计算包(pandas、scipy,甚至深度学习框架等)。总体积约 900 MB,其中包可能占 850 MB。
- Miniconda = 把 Anaconda 中的预装包剥掉,只保留最基本的 conda 软件 + 一个干净的 Python 环境,第三方包全部手动安装,体积小得多(约 50 MB)。
- 好处:conda 像虚拟机或 Docker 一样做整个环境的控制管理工具,可以创建 Python 3.7、3.9、3.11 甚至 2.7 的不同环境,跳出 Python 版本限制,按目标项目的要求精确创建环境。
真实案例:版本冲突(约 09:07–11:51)¶
- 例 1:B 站"跟李沐学 AI"大神做的 autocut(字幕里转写为 autoCAD):用文本编辑器剪视频的工具,删掉字幕里重复的句子视频就自动重剪,对老师录课非常有用;依赖
torch、moviepy等第三方包,当时要求 Python 3.9。 - 例 2:stable-diffusion-webui(文生图):requirements 要求 Python 3.10.6,课程装的 3.11 就不好使。
- 这类冲突正是要用 conda 建独立环境解决的场景。
conda 配置第一步:环境变量(约 11:51–14:42)¶
- 老师装的是 Miniconda3("3" 指自带的 Python 以 Python 3 为主)。
- 若命令行里输入
conda提示找不到命令,第一时间检查环境变量(右键设置 → 系统信息 → 高级系统设置 → 环境变量)。 - 需要添加**两个目录**,缺一不可:
miniconda3(或 anaconda)的**安装根目录**:里面放的是python.exe;- 安装目录下的
Scripts目录:里面放的是pip、conda等辅助工具。 - 这是安装包自己的目录设计,两个都加好后命令行才能跑
conda。
conda 配置第二步:conda init 初始化 shell(约 14:42–16:41)¶
- 光能找到
conda命令还不够:很多同学conda能运行,但**激活虚拟环境时报错**,原因是没有初始化。 - 用
conda init <shell名>为不同的 shell 程序初始化 conda 交互指令;conda init --help可查看支持的 shell:bash、cmd.exe、powershell、fish、tcsh等。 - Windows 下建议同时执行
conda init cmd.exe和conda init powershell;Mac 默认bash(若换过 zsh 需自行处理)。 - 初始化后**重启终端**,提示符前会出现
(base)字样,表示当前处于 conda 的基础环境——这是配置成功的标志。
常用命令(约 16:41–20:54)¶
conda env list:查看已创建的所有虚拟环境。环境默认放在 conda 安装目录下的envs(environments)文件夹里。老师展示了自己的环境:ac(autocut)、bark(文本转语音)、cover(自己写的小项目)、sdai(stable diffusion)、so-vits(AI 孙燕姿类歌声转换)、video2lip(数字人)等。conda create -n ac python=3.11:创建环境。-n即 name,指定环境名;后面指定 Python 版本,可精确到小版本(如python=3.10.6)。conda create -h:查看参数帮助,底部 examples 里有最常见用法;还可以在建环境时直接指定要包含的包,如conda create -n 环境名 python=3.11 moviepy。- 实用技巧:PowerShell 里按 Ctrl+R 可以搜索历史执行过的命令。
conda activate 环境名:激活/切换环境(如conda activate sdai),提示符前括号里的名字会跟着变。python -V(V 大写):查看当前环境的 Python 版本和安装路径——环境配置搞懵时的"指路明灯"。演示:sdai 环境是 3.10.6,另一个环境是 3.11.3。conda list:查看当前环境已安装的包清单。常见踩坑:明明装过包却报找不到模块,很可能是pip/conda install时**装到了别的环境**里,用conda list一查便知,"找得到就是有,找不到就是没有"。- 不同环境状态完全独立:两个环境的 torch 一个是 2.0 一个是 2.0.1,一个带 CUDA 一个不带。
实地查看 site-packages(约 23:51–结尾)¶
- 回应上节课(2023-06)的说法:进入
C:\Users\<用户名>\miniconda3\envs\sdai\Lib\site-packages,可以实际看到安装的包。 - 以
certifi、filelock、jinja2为例:每个包文件夹里都有__init__.py,旁边还有对应的包信息(dist-info)目录。 - 注意:
site-packages里不仅有手动装的包,还有 Python 内置自带的一些内容;不是通过 pip/conda 装的可能在清单里不显示。
示例与演示¶
- 画图拆解:conda(软件)→ 自带 Python 环境 → 内含大量预装包,三者打包成 Anaconda;抽掉预装包即得 Miniconda。
- 环境变量排错演示:找不到
conda命令时去高级系统设置检查miniconda3与miniconda3\Scripts两个路径。 conda init演示:为 cmd 和 PowerShell 初始化,重启后出现(base)。- 建环境演示:
conda create -n ac python=3.11;用 Ctrl+R 翻出历史上为不同项目创建环境时用的精确版本(3.9、3.10.6)。 - 切换与验证演示:
conda activate切换 ac / sdai 环境,分别用python -V看版本与路径、用conda list对比两个环境安装的包(torch 版本、是否带 CUDA)。 - 文件管理器演示:进入
envs\sdai\Lib\site-packages实地查看 certifi、filelock、jinja2 等包及其__init__.py。
重点与难点¶
- conda 相对 pipenv 的核心优势:能为不同项目创建不同 Python 版本的环境,不被宿主 Python 版本锁死。
- 配置两步走,缺一不可:①环境变量加**安装根目录 + Scripts 目录**;②
conda init对应 shell 后**重启终端**(否则能跑conda却激活不了环境,提示符前也没有(base))。 - 装错环境是新手最常见的坑:装包前先看提示符前的环境名,报错时先
conda list验证。 python -V(大写)确认版本和路径,是排查环境混乱的第一手段。- Anaconda 大而全(约 900 MB),Miniconda 精简(只留 conda + 干净 Python),按需选择;
miniconda3的 "3" 指 Python 3 系列。
关联内容¶
- 承接 2023-06"模块与包补充":本课实地验证了
site-packages和__init__.py的说法。 - 对应正课第 10 章:10.5 虚拟环境管理(原视频主讲 pipenv)、10.6 Python 与 Anaconda,本课是对这两节的更新与补充。
- 下一课 2023-08"虚拟环境工作流演示"将用本课的 conda 命令完整部署一个真实开源项目。
- 前置知识:环境变量的概念("计算机维护"类课程讲过)、命令行/终端的基本使用。