1. 先把 Conda 和周边概念摆正,后面少踩八成的坑
很多人一上来就让 conda 安装包,被各种 “Conda” 报错折磨。Conda 并不是某一个 Python 安装器,它本身是一个通用包管理器 + 环境管理器,默认带着 Python 发行版。它能创建多个互相隔离的环境,每个环境可以拥有不同的 Python 版本、不同的包版本,这种隔离机制解决的是项目依赖冲突问题。
比如我在本机要同时维护两个项目:一个项目跑 PyTorch,锁定了 Python 3.10 和某几个 CUDA 相关包;另一个项目要跑最新版 TensorFlow,需要 Python 3.11。如果都在全局环境里装,大概率会冲突;但用 conda 创建两个独立环境,互不干扰,随时切换。这个使用体验用一句话概括就是:先圈地,再装修,装坏了推倒重来不心疼。
Conda 和 pip 的区别,我经常用外卖和家装来类比。pip 像一个外卖平台,能把一个个“做好的包”送到你的 Python 环境里,但对房子本身的结构管得不多。conda 更像一个装修队,不只帮你买家具,连墙体、水电线路一起规划,Python 解释器、CUDA 运行库、系统级的二进制依赖都可以一起处理。所以你会发现 conda 能安装 pip 装不了的非 Python 库,比如 GDAL、HDF5、OpenCV 的底层组件。
还有一组容易混淆的概念需要分开记:Anaconda、Miniconda、Miniforge、conda-forge、mamba。Anaconda 是一个大礼包发行版,预装几百个科学计算包;Miniconda 是轻量版,只有 conda、Python 和小部分必要组件;Miniforge 是社区主导的轻量发行版,默认使用 conda-forge 频道;conda-forge 是一个社区维护的 channel;mamba 是一个更快的新型 conda 替代器,后面会专门讲。
1.1 环境文件、频道和虚拟环境,分别管什么事
理解 conda 前,最需要记住三个核心概念:
- channel(频道):包的下载源,类似手机应用商店。conda 默认从
defaults下载,也可以切换到conda-forge、国内镜像。 - environment(环境):一个独立的“软件房间”,里面有一份自己的 Python 和包集合。环境之间互不可见。
- environment.yml(环境文件):把当前环境配置导出成 YAML 文件,方便在其他机器上重建。
刚开始用 conda 的人最容易犯的错,是把包全装到 base 环境。base 是 conda 自己住的地方,一旦依赖被改乱,conda 本身都可能坏掉。我现在的习惯是:base 环境只做基础维护,比如安装 mamba、更新 conda,项目一律单独建环境。这个习惯帮我省掉的麻烦,比任何一条 conda 命令都值钱。
1.2 为什么 conda 更适合做“完整环境”方案
Python 的虚拟环境工具不止 conda,venv、virtualenv 也干类似的事。区别在于:venv 只隔离 Python 包,不隔离 Python 解释器版本,更不负责系统二进制依赖;conda 则可以把 Python 3.8、3.10、3.11 都放到不同环境里,切换环境相当于切换解释器版本。
如果你只写少量纯 Python 代码,用 venv 已经够了。但如果涉及科学计算、深度学习、地理数据处理,或者需要复现一个指定 CUDA 版本的 PyTorch 环境,我会优先选择 conda。这份手册的后续内容,也都以 conda 为基准来讲。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 安装选型:Miniconda、Anaconda、Miniforge 怎么挑
安装 Conda,不是直接去官网下载一个 Anaconda 就完事了。我见过太多人在第一步就给自己埋了雷:装完 Anaconda 之后,base 环境里塞了几百个包,启动慢,还涉及版权问题。下面把三个主流发行版放在一起说清楚。
2.1 三款发行版的对比与适用场景
| 发行版 | 包管理器 | 默认频道 | 体积 | 适用场景 |
|---|---|---|---|---|
| Anaconda | conda | defaults | 很大(安装包约 1GB+) | 新手尝鲜、完整科学计算全家桶 |
| Miniconda | conda | defaults | 较小(约几十 MB) | 想自己掌控包、项目环境隔离 |
| Miniforge | conda/mamba | conda-forge | 较小(约几十 MB) | 关注开源版权、偏好社区频道 |
如果你是为了快速体验,装 Anaconda 确实省心,因为它预装了很多常见包。但我的建议是:从 Miniconda 或 Miniforge 开始。原因很简单,很多包你根本用不上,没必要让一个庞大的 base 环境拖慢 conda 的求解速度;而且用不到预装包的时候,Anaconda 的授权条款反而可能造成麻烦。
2.2 Anaconda 的商业使用条件,和 Miniforge 为什么能避开
Anaconda 的默认频道 defaults 里不少包来自 Anaconda 公司的商业发行版。从 2020 年开始,Anaconda 的 Terms of Service 规定:符合特定规模的组织(我记得关键是超过 200 人的企业且年收入超过一定阈值),如果使用 Anaconda 的默认频道和发行版,需要购买商业许可证。
这个版权问题在日常个人开发中影响不大,但我看到越来越多企业在内部规范里明确禁止直接安装 Anaconda。更稳妥的替代方案是 Miniforge,它的默认频道是 conda-forge,这是一个完全由社区维护、遵循开源协议分发的频道,基本不会踩到 Anaconda 的商业授权红线。所以如果你所在团队有合规要求,可以直接使用 Miniforge 来避免后期麻烦。
2.3 Windows、Linux、macOS 的安装要点
Windows 环境
从官网下载 Miniconda 安装包,双击执行。安装过程中有一个关键选项:“Add Miniconda3 to PATH” 默认不勾选。这是不少人遇到 'conda' 不是内部或外部命令 的原因。要不要勾选,我分两种情况说:
- 只准备用 Anaconda Prompt 或者已经装了 VS Code,可以不勾选,然后通过初始化命令配置。
- 想在 PowerShell、CMD 里直接输入
conda,建议勾选,或者安装后手动执行conda init powershell。
Linux 环境(含 Ubuntu)
Ubuntu 安装 conda 的方式高度统一:下载脚本,然后 bash 执行。比如用 Miniconda:
bash复制wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
执行期间会问安装路径和是否帮你初始化 conda,我建议把初始化选项选为 yes,这样 ~/.bashrc 里会自动写入 conda 初始化脚本。安装完以后执行:
bash复制source ~/.bashrc
conda --version
注意如果在 SSH 会话里,可能不会立即生效,重新登录一次最保险。如果公司网络访问外网慢,也可以从国内镜像站下载安装脚本,或直接用 Miniforge:
bash复制wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh
bash Miniforge3-Linux-x86_64.sh
macOS 环境
macOS 和 Linux 类似,也分成 Intel 和 Apple Silicon 两种架构,安装包前缀分别是 x86_64 和 arm64,不要下错。如果是在 M1/M2/M3 芯片上做深度学习,优先选原生 arm64 的 conda 发行版,再安装针对 arm64 的包,能和系统性能对齐。
2.4 安装完成后先做两件事
第一件事,确认 conda 版本和当前环境:
bash复制conda --version
conda env list
第二件事,把 base 环境的 conda 更新到最新版,免得后面遇到底层 bug:
bash复制conda update -n base conda
如果是 Miniforge,也可以用 mamba update -n base conda,区别只是命令前缀不同。
3. 虚拟环境完整生命周期:创建、切换、删除、导出与跨平台迁移
环境管理是 conda 使用频率最高的功能。下面这些命令我几乎每天都在用,尽量从使用场景出发,而不是只列命令清单。
3.1 创建和切换环境,这是最基本的肌肉记忆
创建环境时,我习惯直接指定 Python 版本,而不是让 conda 随便挑最新版本:
bash复制conda create -n myproject python=3.10
这里 -n 是 --name 的简写,myproject 是环境名,可以自定义成项目名、功能名。如果还需要在开始时就装一批包,可以一次写全:
bash复制conda create -n data_analysis python=3.11 numpy pandas matplotlib
切换到环境:
bash复制conda activate data_analysis
退出当前环境:
bash复制conda deactivate
查看所有环境:
bash复制conda env list
删除一个环境:
bash复制conda env remove -n data_analysis
有些旧教程还在用 source activate,在 conda 4.4 之后官方推荐的是 conda activate。如果你写完 conda activate 后发现提示找不到命令,说明 conda 还没有初始化 shell,先执行 conda init 再重开终端。
3.2 复制环境作为“安全备份”
我给比较重要的项目环境改动前,会先做一个克隆备份。比如想复制 webapp 环境为 webapp_bak:
bash复制conda create -n webapp_bak --clone webapp
这比直接删除再重建快得多,也安全得多。尤其当你调试一个复杂依赖环境时,先克隆一份,再怎么折腾都不怕。
3.3 导出环境文件:记录比记忆靠谱
环境里装了什么包,时间一长肯定记不住。我在完成一个阶段后一定会导出一次环境声明文件:
bash复制conda env export > environment.yml
这个命令会包含环境里所有包的具体版本和构建号,适合在同平台、同架构机器上精确复现。但如果你想迁移到不同平台,我更推荐:
bash复制conda env export --from-history > environment.yml
--from-history 只记录你显式安装过的包,不含自动依赖,跨平台兼容性更好。如果别人用 environment.yml 重建环境:
bash复制conda env create -f environment.yml
如果文件里定义的环境名不喜欢,可以创建时指定新名字:
bash复制conda env create -f environment.yml -n new_name
3.4 Linux 离线迁移到 Windows:别再想通过 Copy 文件夹搞定
热搜词里 “conda linux 离线迁移到 windows” 是个很典型的误区。很多人觉得 Linux 上装好的 conda 环境,直接把 ~/miniconda3/envs/project 打包拷到 Windows 就能用。这个思路在同一个系统上很吸引人,但跨平台基本行不通。因为 conda 环境里的可执行文件、.so 共享库、.dll 动态库都和操作系统强相关;Linux 下的二进制包里可能依赖 glibc,Windows 下根本没有对应实现。
正确做法是把“声明”而不是“实体”迁移过去。流程大概这样:
- 在 Linux 环境导出最小依赖声明:
bash复制conda activate project conda env export --from-history > project.yml - 把这个 yml 文件传到 Windows 机器。
- 在 Windows 上执行:
bash复制conda env create -f project.yml
如果 Windows 目标机器完全离线,跨平台离线就需要分两步准备:先找一台同操作系统、能联网的 Windows 机器,用这份 yml 创建好环境并测试通过;然后再通过 conda-pack 把 Windows 环境打包,传到离线 Windows 机器上,解压到对应的 envs 目录并激活。但要注意,conda-pack 也需要目标机器的系统平台和打包机器一致,Linux 上的包不能直接扔给 Windows 用。
还有一种更细颗粒度的离线安装方式:在能联网的 Windows 机器上用 conda install --download-only 把安装包缓存下来,把整个 pkgs 缓存目录复制到离线机器,再用 conda create --offline 安装。这些方式都比直接 copy 环境目录可靠。
3.5 一个小提醒:环境名与项目的对应关系
环境名我用得很随意,但这几年总结出的经验是:小项目可以直接用项目名,但同一个项目可能要同时测 Python 3.10 和 3.11,建议写成 project_name_py310 这样带版本和环境用途的名字。避免出现 test1、test2 这种看到名字记不清内容的垃圾环境。
4. 换源、镜像、conda-forge 与“不用镜像”的正确打开方式
conda 下载包默认走官方源,在国内网络环境下经常慢得离谱。包没下载时卡在 “Solving environment” 或 “Downloading”,多半和源有关系。这节把换源原理、配置步骤和恢复默认源全部讲清楚。
4.1 channel 优先级,先了解再换源
conda 安装包时会沿着 channels 列表从上到下寻找包,找到符合依赖要求的包就会采用。如果多个 channel 都提供同一个包,channel 顺序会影响解析结果。在 .condarc 中 channels 列表写在前面的是高优先级。
我建议在配置源之前先看当前配置:
bash复制conda config --show channels
conda config --show channel_priority
默认情况下 channel_priority 是 flexible,此时 conda 不会严格控制优先级;如果想让包优先从 conda-forge 获取,可以改成:
bash复制conda config --set channel_priority strict
strict 模式可以避免从多个频道混合安装同一个包产生的依赖冲突,但要求你列出的所有频道都确实提供所需包。如果你极少用 defaults 以外的源,也可以在 flexible 模式下混用。
4.2 配置国内镜像源的正确姿势
镜像源的本质是:同一个 channel 的内容被同步到国内服务器,conda 从更快的地方下载。以清华源为例,我常见的配置方式是写入 .condarc 文件而不是靠一条条 --add channels 命令。
.condarc 文件位置:Linux/macOS 在 ~/.condarc,Windows 在 C:\Users\<用户名>\.condarc。如果文件不存在就新建一个,内容可以参考:
yaml复制channels:
- defaults
show_channel_urls: true
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
nvidia: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
这份配置的意思是:conda 默认仍走 defaults 逻辑,但把 defaults 的多个仓库地址映射到清华镜像;同时把 conda-forge、pytorch、nvidia 这些自定义频道也同步到清华镜像。实测下来,很多 PyTorch 相关的包下载速度会稳定很多。
如果你习惯用命令配置,也可以这样:
bash复制conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
conda config --set show_channel_urls yes
阿里云镜像同理,地址是 https://mirrors.aliyun.com/anaconda/pkgs/main/。无论用哪个,都建议只配一套,不要把多个镜像源一股脑混进 channels 列表。因为镜像同步时间不同,混用可能导致某个包在一个镜像上存在、另一个镜像上不存在,继而引发依赖解析问题。
4.3 想要“不用镜像源”,怎么恢复官方源
网上很多人搜“conda 不用镜像源”,原因各不相同:有的公司内网必须走指定源,有的发现镜像源的包版本滞后,有的纯粹想回到官方源试试。恢复方式很简单,删除 .condarc 里的自定义源,或者执行:
bash复制conda config --remove-key channels
conda config --remove-key default_channels
conda config --remove-key custom_channels
如果只想单次安装时不走 channels 配置,而临时指定官方源或 conda-forge,可以用 --override-channels:
bash复制conda create -n testenv python=3.10 --override-channels -c defaults
--override-channels 会临时忽略 .condarc 里配置的所有 channels,只使用 -c 指定的频道。这个参数很实用,比如你想验证一个包在 conda-forge 上是否可用:
bash复制conda install --override-channels -c conda-forge xinference
但注意,这样的单次命令不会修改全局配置,下次安装依旧会读取 .condarc。
4.4 conda-forge 与 Anaconda 默认频道的选择逻辑
conda-forge 是一个完全由社区维护的开源软件频道,里面包数量非常多,更新也很快。相比之下,Anaconda 的 defaults 频道偏商业维护,包经过测试,但发布节奏不一定跟得上最新版。对深度学习和很多新库来说,conda-forge 往往是第一选择。
在版权合规方面,使用 Miniforge 并默认走 conda-forge 能有效规避 Anaconda 默认频道的商业授权风险。即便你已经在用 Miniconda,也可以完全弃用 defaults,把频道改成 conda-forge:
bash复制conda config --add channels conda-forge
conda config --remove channels defaults
conda config --set channel_priority strict
如果遇到某个包只在 conda-forge 提供,而系统里已经有默认频道装的旧包,尽量在干净环境里从 conda-forge 安装。混用默认频道和 conda-forge 的同类包,比较容易产生依赖冲突。
5. 别再硬等 “Solving environment”:卡住的原因与加速方法
“conda 安装包一直卡在 solving environment” 这个问题,几乎每个重度用户都遇到过。很多人以为是自己网络差,其实是 conda 的依赖求解器在试图检查所有可能组合。
5.1 Solving environment 到底在解什么
Conda 安装包不是单独下载一个文件就完事。它会根据当前环境中已有包的版本、channel 中可用的元数据、Python 版本约束、其他包之间的依赖关系,找出一个没有冲突的安装方案。这个过程类似于在一个复杂约束网络里找可行解,包越多、约束越乱,耗时越长。如果指定的包和现有环境冲突严重,求解器甚至可能跑十几分钟最后报 UnsatisfiableError。
5.2 用 libmamba solver 替代旧求解器
Conda 在 22.11 之后开始集成 libmamba 求解器,速度比旧版默认求解器快好几倍。你可以手动开启:
bash复制conda update -n base conda
conda install -n base conda-libmamba-solver
conda config --set solver libmamba
设置完成后,再执行安装命令时会明显感觉到 “Solving environment” 阶段缩短。如果 conda 版本比较旧,建议先执行 conda update -n base conda。
5.3 用 Mamba 替代 conda 命令
Mamba 相当于一个用 C++ 重写依赖解析和并行的 conda。你可以把它装到 base 环境:
bash复制conda install -n base mamba
之后大部分包安装命令可以直接写成:
bash复制mamba install numpy
mamba create -n myproject python=3.11
Mamba 的命令风格和 conda 高度一致,但执行速度快很多,尤其在依赖复杂时体验差异巨大。如果你使用 Miniforge,安装包时甚至会自带 mamba。
5.4 从安装习惯上减少无关约束
除了换求解器,我还会从下面这些习惯上缩短求解时间:
- 创建新环境而不是在旧环境里硬装。旧环境里可能有几十个包,每加一个新包都要重新检查全部约束,很容易卡住。
- 创建环境时一次把主要包列全,让 conda 在一开始就拿到完整需求,而不是装一个解一次。
- 避免在
base环境里安装各种项目包,保持基础环境干净。 - 指定大版本范围而不是完全裸装。比如
python=3.10、numpy>=1.21,能给求解器更多确定方向。 - 先 conda-forge,找不到再用 pip。如果 conda 在官方源或 conda-forge 里都没有这个包,就不要硬等 conda 解一个不存在的解,直接用 pip 安装反而更顺。
5.5 示例:用 conda 创建环境并安装 xinference
“conda 安装 xinference”是这个手册里一个很典型的场景。xinference 是一个大模型推理服务框架,官方多数情况下推荐使用 pip install "xinference[all]" 安装,但如果你想用 conda 管理它的运行环境,最简单的路线是:
bash复制conda create -n xinference python=3.10
conda activate xinference
pip install "xinference[all]"
为什么不用 conda install xinference?因为相当一部分 AI 项目的新包,PyPI 上的发布速度远快于 conda-forge。用 conda 的好处在于隔离 Python 环境,不影响你其他项目的依赖;包本身通过 pip 装,并不冲突。你可以先把 conda 当作环境容器,再用 pip 往里面添加包,这是现代 Python 开发中很常见的组合。
6. VS Code、JupyterLab 与 Conda 的联调细节
命令行用熟了,很多人还会用 VS Code 和浏览器里的 JupyterLab 开发。这两块正好是热搜问题的高发区。
6.1 conda 怎么打开网页版 Jupyter
在 conda 环境里打开网页版 Jupyter 的流程是:先创建并激活环境,然后安装 JupyterLab 或 Notebook:
bash复制conda activate datascience
conda install jupyterlab
jupyter lab
如果只装基础版:
bash复制conda install notebook
jupyter notebook
执行后终端会输出一串本地 URL,比如 http://localhost:8888/tree?token=xxxx,浏览器一般会自动打开。如果不能自动打开,把 URL 手动复制到浏览器地址栏即可。
有一点需要提醒:如果在某个 conda 环境里安装了 jupyterlab,但启动时看不到当前环境的内核,通常是因为没有安装 ipykernel。给当前环境做一次内核注册:
bash复制conda activate myenv
conda install ipykernel
python -m ipykernel install --user --name myenv --display-name "myenv"
这样打开 JupyterLab 后,新建笔记本的内核选择器里就能看到 myenv 选项。
6.2 VS Code 使用 conda 环境的完整链路
VS Code 是常用编辑器,想在某个 conda 环境里运行 Python,关键步骤是“选解释器”。
先安装 Python 扩展,然后按 Ctrl+Shift+P,输入 “Python: Select Interpreter”,在列表里选择对应 conda 环境。如果列表里没有,可以点“Enter interpreter path”手动指定。
VS Code 的 Python 扩展正常情况下会调用 conda 自动发现所有虚拟环境。如果你在 VS Code 终端里输入 conda activate myenv 时提示找不到 conda,一般有两条处理路径:
-
先让 conda 在 shell 中初始化:
bash复制
conda init bash或者 Windows PowerShell 环境:
powershell复制
conda init powershell执行后重启 VS Code。
-
在 VS Code 设置里指定
python.condaPath为 conda 可执行文件的完整路径。Windows 下常见路径是:code复制C:\Users\你的用户名\miniconda3\Scripts\conda.exeLinux/macOS 下常见路径是:
code复制
/home/你的用户名/miniconda3/bin/conda /opt/miniconda3/bin/conda如果你连“找不到 conda 可执行文件”的弹窗报错,排查顺序就是:先确认
/bin/conda或Scripts/conda.exe真实存在;再确认该路径是否写入系统 PATH 或 VS Code 的python.condaPath;最后重启 VS Code。
6.3 Windows 11 下 JupyterLab 提示 ssl.sslerror 的处理思路
热搜里有条是 “win11 conda 配置jupyterlab 提示 ssl.sslerror {asn1: not_enough_data}”。我第一次遇到也愣了半天,后来发现这类错误大概率出在 Jupyter 被配置成 HTTPS 访问,但证书文件或系统 OpenSSL 解析出问题。
如果你不需要外网访问本机 Jupyter,只是本地开发,最直接的办法是用 HTTP 模式启动:
bash复制jupyter lab --no-browser --ip=127.0.0.1 --port=8888
同时检查一下 Jupyter 配置文件里是否设置了 ServerApp.certfile、ServerApp.keyfile 之类的证书路径。如果之前尝试过配置 HTTPS,先把这些配置清掉,用回默认 HTTP。注意不要清除 token 设置,否则访问可能受限。
如果确实需要 HTTPS,并确认证书文件没问题,可以更新 OpenSSL 依赖:
bash复制conda install -n base openssl
或更新 JupyterLab:
bash复制pip install --upgrade jupyterlab
这类报错往往不是代码问题,而是证书格式或版本不一致。排查时最忌讳把配置越调越复杂,先回到可用的 HTTP 模式,再逐项加证书配置,能更快定位到问题。
7. 高频报错速查与我的处理习惯
最后把经历过的高频问题汇总成一张速查表,方便遇到问题时直接对照。
| 现象 | 大概率原因 | 快速处理 |
|---|---|---|
'conda' 不是内部或外部命令 |
conda 未加入 PATH,或 shell 未初始化 | 用 Anaconda Prompt 运行 conda init,或手动添加 PATH;Windows 确认是否勾选了安装选项 |
CommandNotFoundError: Your shell has not been properly configured to use 'conda activate' |
当前 shell 没有初始化 conda | 执行 conda init bash 或 conda init powershell,重启终端 |
Solving environment 卡住 |
默认求解器太慢、依赖冲突太复杂 | 安装 conda-libmamba-solver 并启用,或使用 mamba;必要时新建干净环境 |
| 下载速度很慢 | 正在访问官方源 | 配置国内镜像,启用清华/阿里镜像 |
某个包明明存在却提示 PackagesNotFoundError |
当前 channel 里没有这个包 | 试 -c conda-forge,或改用 pip 安装 |
| 想把 Linux 环境迁到 Windows | 二进制包不可跨平台 | 导出 --from-history 的 yml,在 Windows 上重建;离线场景只能在 Windows 平台内转移 |
| VS Code 找不到 conda 可执行文件 | python.condaPath 未设置 |
在 settings.json 里指定 conda 可执行文件的绝对路径 |
| Jupyter 启动直接报 SSL 解析错误 | Jupyter 被配置成 HTTPS 或证书有问题 | 先用 --no-browser --ip=127.0.0.1 跑 HTTP 模式,再排查证书 |
排查问题我有一个习惯:永远先看报错的前三行,再看日志尾部。 conda 报的错往往在信息最后,但真正的提示在“Running conda install ...”和“Solving environment”之间。如果某些依赖报出 UnsatisfiableError,不要直接在老环境里反复试,新开一个环境用相同命令重试,能排除大量历史残留问题。
另外,建议环境里不要安装过多用不到的包。conda 的依赖求解器面对的环境越乱,求解越慢,出冲突的概率越大。我每完成一个项目都会用 conda env list 检查环境,删掉不再需要的环境。这个习惯看起来简单,但能让你后续每次 conda install 都快很多、省心很多。
如果你已经读了这份手册并照做了大部分操作,接下来大概率不会再被 “Conda” 三个字吓住。环境管理说到底就这些事:选对发行版、建好隔离环境、配置好源、懂得导出和重建。把这些基本功练扎实,后面无论装 xinference、PyTorch 还是其他复杂依赖,都不过是在干净环境里多敲一条命令而已。
