Anaconda国内镜像源配置指南:清华源与阿里云源详解
1. 为什么国内用 conda 第一步永远是换源如果你在国内做 Python 开发或者数据科学相关的工作大概率经历过这样的场景新装好 Anaconda兴致勃勃地敲下conda install numpy然后终端卡在Solving environment或者Collecting package metadata那里转圈五分钟、十分钟过去了进度条纹丝不动。这不是你的网络有问题也不是 conda 本身出了故障而是默认的包索引服务器在国外国内访问的延迟和丢包率都高得离谱。conda 的默认 channel 指向的是 Anaconda 官方的仓库服务器部署在海外。每次执行安装、更新、创建环境这类操作conda 都需要从远端拉取 repodata仓库元数据这个文件本身就不小再加上网络链路的波动超时几乎是必然的。换源的本质就是把这个远端地址替换成国内的镜像服务器让包的下载和元数据拉取都走国内链路速度能从几十 KB 每秒直接拉到几 MB 甚至十几 MB 每秒。我自己的经验是一台新机器装完 Anaconda 之后第一件事不是急着装包而是先把源配好。这个顺序很重要因为如果你先装了一堆包再换源之前缓存的索引和已下载的包可能和新源不一致反而容易出问题。换源这个操作本身不复杂但细节不少配错了轻则速度没提升重则直接报CondaHTTPError或者PackagesNotFoundError。这篇文章会围绕Anaconda和conda的国内镜像源配置展开重点讲清华源和阿里云源两套方案覆盖 Windows、macOS、Linux 三个平台。不管你是刚接触anaconda安装的新手还是已经用了一段时间但一直没折腾过conda 换源的老用户下面这些内容都能直接拿来用。我会把每一步的命令、配置文件的写法、以及我实际踩过的坑都写清楚尽量让你一次配好不用反复试错。2. 动手之前先把 conda 的配置体系搞清楚2.1 .condarc 文件到底管什么很多人换源的时候直接复制一段命令就跑了根本没搞清楚 conda 的配置到底存在哪里、优先级怎么排。结果就是换完源发现没生效或者过了一段时间又变回去了。要避免这些问题得先理解.condarc这个文件。.condarc是 conda 的运行时配置文件YAML 格式里面记录了 channel 地址、是否显示 channel 优先级、代理设置、环境路径等等。conda 在运行时会按以下顺序查找这个文件系统级配置/etc/conda/.condarcLinux/macOS或C:\ProgramData\conda\.condarcWindows用户级配置~/.condarcLinux/macOS或C:\Users\你的用户名\.condarcWindows环境变量CONDARC指定的路径当前激活环境内的.condarc优先级从低到高也就是说用户级的配置会覆盖系统级的。绝大多数情况下我们改的都是用户级的~/.condarc。你可以用conda config --show-sources这个命令查看当前生效的所有配置文件路径和内容排查问题的时候非常有用。注意Windows 下.condarc文件默认是不存在的需要你自己创建。而且文件名前面有个点在资源管理器里可能看不到建议用命令行或者 VS Code 这类编辑器来创建和编辑。2.2 channel 优先级与 default_channels 的区别这是最容易搞混的一个点。.condarc里有两个跟源地址相关的字段channels和default_channels。它们的作用完全不同。default_channels定义的是defaults这个特殊 channel 实际指向的地址。当你在.condarc里写channels: [defaults]的时候conda 会去default_channels里列出的 URL 找包。所以如果你想把默认源换成清华或者阿里云改的是default_channels。channels则是你实际使用的 channel 列表可以包含defaults也可以包含conda-forge、bioconda这些第三方 channel。换源的时候通常的做法是把defaults保留在channels列表里然后把default_channels指向国内镜像。还有一个关键参数是channel_priority。conda 4.6 之后引入了严格的 channel 优先级机制默认值是flexible。如果你设成strictconda 会严格按照channels列表的顺序来选包前面的 channel 里有的包就不会去后面的找。这个设置在某些情况下能避免版本冲突但也可能导致找不到包。我一般建议保持默认的flexible除非你明确知道自己需要严格优先级。2.3 换源之前先备份这个习惯能救命我见过太多人换源换出问题之后连原来是什么配置都忘了只能重装 Anaconda。其实只要在动手之前把原来的.condarc备份一下出问题随时能回滚。# Linux / macOS cp ~/.condarc ~/.condarc.bak # Windows (PowerShell) Copy-Item $env:USERPROFILE\.condarc $env:USERPROFILE\.condarc.bak如果原来根本没有.condarc文件那更简单直接新建就行。备份这一步花不了十秒钟但能省掉你后面可能几个小时的排查时间。3. 清华源配置最主流的选择3.1 清华源的地址结构和适用场景清华大学的 TUNA 镜像站是国内最早、最稳定的一批开源镜像之一对 conda 的支持非常完善。它的 conda 镜像地址结构是这样的主仓库https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/自由仓库https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/第三方仓库https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/PyTorch 专用https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/清华源的优势在于覆盖面广除了 conda 之外还有 pypi、ubuntu、docker 等各种镜像一个站基本能满足大部分需求。而且清华源的同步频率比较高主仓库基本能做到和官方同步。不过有一点要注意清华源曾经在 2019 年左右因为版权问题关闭过一段时间后来恢复了但pkgs/free这个仓库的内容已经很久没更新了。如果你需要一些老版本的包可能还是得从官方源或者别的渠道找。3.2 命令行方式三条命令搞定最直接的方式是用conda config命令来配置。这种方式的好处是不用手动编辑 YAML 文件不容易出现格式错误。# 添加清华主仓库 conda config --add default_channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --add default_channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ # 添加 conda-forge 镜像 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ # 设置显示 channel 地址方便排查问题 conda config --set show_channel_urls yes这里有个细节--add是往列表里追加如果你之前已经加过同样的地址会重复。所以更稳妥的做法是先清理再添加# 先移除所有 default_channels conda config --remove-key default_channels # 再重新添加 conda config --add default_channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --add default_channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/conda config --remove-key这个命令很多人不知道它可以把某个配置项整个删掉比手动去编辑文件方便得多。3.3 直接写 .condarc 文件更可控的方式命令行方式虽然方便但有时候不够直观尤其是你需要配置多个 channel 或者调整优先级的时候。直接编辑.condarc文件能让你对配置有完全的掌控。下面是一份我常用的清华源配置模板channels: - defaults - conda-forge default_channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r/ custom_channels: conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud show_channel_urls: true channel_priority: flexible这里我加了custom_channels字段它的作用是把某个 channel 名称映射到指定的镜像地址。比如你写conda install -c pytorch pytorchconda 会自动去https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch找包不用你手动指定完整 URL。pkgs/r是 R 语言的仓库如果你不做 R 相关的工作可以不加。但加上也没坏处反正只是多一行配置。3.4 验证配置是否生效配完之后别急着装大包先用一个小包测试一下。我一般用conda install requests或者conda install numpy来验证因为这两个包体积小、依赖少能快速看出源是否生效。# 查看当前配置 conda config --show channels conda config --show default_channels # 测试安装 conda install requests -y如果配置正确你会在输出里看到类似这样的信息Downloading and Extracting Packages requests-2.31.0 | 120 KB | ########## | 100%关键是看下载地址是不是mirrors.tuna.tsinghua.edu.cn开头的。如果是repo.anaconda.com说明配置没生效需要检查.condarc文件的位置和内容。还有一个命令conda info可以查看当前的所有配置信息包括 channel 地址、环境路径、conda 版本等等。排查问题的时候这个命令的输出是最全面的。4. 阿里云源企业环境下的另一个选择4.1 阿里云 conda 镜像的特点阿里云的 conda 镜像地址是https://mirrors.aliyun.com/anaconda/结构和清华源类似也包含pkgs/main、pkgs/free、cloud/conda-forge这些路径。阿里云源的优势在于如果你本身就在用阿里云的服务器比如 ECS内网访问的速度会非常快而且流量不计费。对于企业用户来说这是一个很实际的考量。另外阿里云的 CDN 节点覆盖比较广在某些地区可能比清华源的速度更稳定。不过阿里云的 conda 镜像同步频率有时候不如清华源特别是一些更新比较频繁的第三方 channel可能会有延迟。我一般建议主仓库用阿里云conda-forge 这类第三方 channel 还是用清华源两者可以混用。4.2 阿里云源的配置写法阿里云源的配置和清华源基本一致只是地址不同channels: - defaults default_channels: - https://mirrors.aliyun.com/anaconda/pkgs/main/ - https://mirrors.aliyun.com/anaconda/pkgs/free/ - https://mirrors.aliyun.com/anaconda/pkgs/r/ show_channel_urls: true channel_priority: flexible如果你想把 conda-forge 也指向阿里云可以加custom_channels: conda-forge: https://mirrors.aliyun.com/anaconda/cloud但前面说了阿里云的 conda-forge 同步可能不及时所以我个人更倾向于 conda-forge 用清华源主仓库用阿里云。这种混搭的配置完全没问题conda 支持不同 channel 指向不同的镜像地址。4.3 清华源和阿里云源的对比对比项清华源阿里云源主仓库同步频率高基本实时较高偶有延迟conda-forge 覆盖完善一般内网访问优势教育网内快阿里云 ECS 内网快稳定性非常稳定非常稳定适用场景通用个人开发企业阿里云环境这张表是我自己实际使用下来的感受不一定适用于所有人。如果你在教育网内清华源的速度基本是碾压级的。如果你在公司里用阿里云的服务器那阿里云源的内网优势就很明显。4.4 切换源之后必须做的一件事不管你用的是清华源还是阿里云源换完之后一定要执行一次清理命令conda clean -i这个命令会清除 conda 的索引缓存。因为 conda 会把从旧源拉取的 repodata 缓存到本地如果你不清理换源之后 conda 可能还在用旧的缓存导致你以为换源没生效。-i参数表示只清理索引缓存不会动你已经下载的包所以很安全。我遇到过好几次这样的情况明明.condarc改对了但conda install还是走的老源折腾半天才发现是缓存没清。所以现在换源之后第一件事就是conda clean -i已经成了肌肉记忆。5. 换源之后仍然慢或者报错的排查思路5.1 CondaHTTPError 和 SSLError 的常见原因换完源之后最常见的报错就是CondaHTTPError和SSLError。这两个错误的成因不太一样排查方法也不同。CondaHTTPError通常是网络层面的问题比如镜像站暂时不可用、你的网络环境有防火墙拦截、或者 URL 写错了。排查的时候先用curl或者浏览器直接访问一下镜像地址看看能不能打开curl -I https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/如果返回 200 或者 301/302说明地址没问题那可能是 conda 的配置有误。如果返回 403 或者超时那就是网络或者镜像站本身的问题。SSLError则通常是证书相关的问题。有些公司网络会做 SSL 拦截导致 conda 无法验证镜像站的证书。这种情况下可以临时关闭 SSL 验证conda config --set ssl_verify false但我要强调这只是临时方案不建议长期开着。正确的做法是把公司的根证书导入到 conda 的证书信任列表里或者联系网络管理员解决。5.2 代理设置导致的连接问题如果你在公司内网可能需要通过代理才能访问外网。conda 的代理配置和系统代理是分开的需要在.condarc里单独设置proxy_servers: http: http://proxy.company.com:8080 https: http://proxy.company.com:8080但如果你已经换了国内源理论上不需要代理也能访问。这时候如果.condarc里还留着代理配置反而会导致连接失败。所以换源之后要检查一下有没有残留的代理设置conda config --show proxy_servers如果有输出用conda config --remove-key proxy_servers删掉。5.3 环境变量干扰一个容易被忽略的坑有时候.condarc配置完全正确但 conda 就是不生效。这种情况很可能是环境变量在捣乱。conda 会读取CONDARC、CONDA_PREFIX、CONDA_DEFAULT_ENV这些环境变量如果设置不当会覆盖配置文件里的设置。排查方法很简单# Linux / macOS env | grep -i conda # Windows PowerShell Get-ChildItem Env: | Where-Object { $_.Name -like *CONDA* }如果看到CONDARC指向了一个你不认识的路径那问题就找到了。删掉这个环境变量或者把它指向正确的.condarc文件。还有一个常见情况是你在某个 conda 环境里改了配置但退出环境之后配置又变回去了。这是因为 conda 支持环境级别的.condarc激活环境时会读取环境目录下的配置文件。要避免这个问题就在 base 环境下改配置或者直接改用户级的~/.condarc。5.4 用 conda info 和 conda config --show-sources 定位问题这两个命令是我排查 conda 问题的首选工具。conda info会输出当前 conda 的完整信息包括版本、平台、channel 地址、环境列表等等。conda config --show-sources则会列出所有生效的配置文件路径和内容能帮你快速定位是哪个文件在起作用。conda info conda config --show-sources我一般会先看conda config --show-sources的输出确认配置文件的位置和内容是否符合预期。然后再看conda info里的channel URLs部分确认实际使用的 channel 地址是不是镜像地址。这两个信息一对上基本就能确定问题出在哪里。6. 不同平台和场景下的配置差异6.1 Windows 下的路径和权限问题Windows 下配置 conda 源最大的坑是路径和权限。.condarc文件默认在C:\Users\你的用户名\下面但如果你是用管理员权限安装的 Anaconda有时候 conda 会去读C:\ProgramData\conda\.condarc这个系统级配置。判断方法还是用conda config --show-sources它会告诉你当前读的是哪个文件。如果读的是系统级的而你没有管理员权限去改那就用conda config --set命令来改它会自动写到用户级的配置文件里。另外 Windows 下路径分隔符是反斜杠但在.condarc里写 URL 的时候还是用正斜杠不要搞混了。6.2 macOS 上 zsh 和 bash 的差异macOS 从 Catalina 开始默认 shell 换成了 zsh但 conda 的初始化脚本可能还是写在.bash_profile里。如果你发现终端里conda命令找不到或者换源之后不生效先检查一下 shell 配置# 查看当前 shell echo $SHELL # 查看 conda 初始化状态 conda init --dry-run如果 conda 没有初始化执行conda init zsh或者conda init bash来初始化。初始化之后需要重启终端或者source ~/.zshrc才能生效。6.3 在 Docker 容器里配置 conda 源如果你在 Docker 容器里用 conda配置方式略有不同。因为容器里的用户目录可能和宿主机不一样而且容器重建之后配置会丢失。推荐的做法是在 Dockerfile 里直接写入配置RUN conda config --add default_channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ \ conda config --add default_channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ \ conda config --set show_channel_urls yes \ conda clean -i这样每次构建镜像的时候都会自动配置好源不用手动干预。如果你用的是continuumio/miniconda3这个基础镜像它默认就是 root 用户.condarc会写在/root/.condarc。6.4 PyCharm 等 IDE 中 conda 环境的源配置很多人是在 PyCharm 里用 conda 环境的这时候要注意PyCharm 只是调用 conda 的命令行工具源配置还是走.condarc文件。所以你在终端里配好了源PyCharm 里也会生效。但有一个例外如果你在 PyCharm 里通过图形界面创建 conda 环境它可能会用自己的一套逻辑来解析包有时候会绕过.condarc的配置。遇到这种情况我建议还是在终端里用conda create命令创建环境然后在 PyCharm 里手动指定这个环境的 Python 解释器路径。7. 我踩过的几个坑和对应的解法7.1 换源之后 conda 反而更慢了这个情况听起来反直觉但确实会发生。原因通常是镜像站的某个仓库同步不及时conda 在拉取 repodata 的时候超时了然后自动回退到官方源结果就是两边都慢。解决办法是只保留你真正需要的 channel。比如你不需要 R 语言的包就把pkgs/r从default_channels里删掉。channel 越少conda 需要拉取的 repodata 就越少速度自然就上来了。另外可以设置repodata_timeout_secs参数来调整超时时间conda config --set repodata_timeout_secs 60默认好像是 30 秒左右设长一点能减少超时的概率。7.2 conda-forge 和 defaults 的包版本冲突这是另一个常见问题。同一个包在 conda-forge 和 defaults 里可能有不同的版本conda 在解析依赖的时候可能会选错。表现就是Solving environment卡很久最后报一个UnsatisfiableError。我的经验是如果你主要用 defaults就把 conda-forge 放在channels列表的后面让 defaults 优先。反过来如果你主要用 conda-forge就把它放前面。关键是保持一致性不要今天用 defaults 明天用 conda-forge那样环境很容易乱。如果已经出现了冲突可以试试用conda install -c conda-forge --override-channels来强制只从 conda-forge 找包。--override-channels这个参数会忽略.condarc里的 channel 配置只用命令行指定的 channel。7.3 清理缓存释放磁盘空间conda 的缓存目录会随着使用不断增大尤其是你经常创建和删除环境的话缓存可能占到几十 GB。定期清理是个好习惯# 查看缓存占用 conda clean --dry-run --all # 实际清理 conda clean --all--dry-run会告诉你将会删除哪些文件、释放多少空间确认没问题再去掉这个参数执行。我一般每个月清理一次能释放不少空间。但要注意conda clean --all会把所有缓存都删掉包括已下载的包。下次安装同样的包时需要重新下载。如果你网络不好可以只清理索引缓存conda clean -i和临时文件conda clean -t保留包缓存。7.4 离线环境下的源配置有些公司的生产环境是完全离线的不能访问外网。这种情况下换源就没意义了需要搭建本地的 conda 镜像。常用工具是conda-mirror或者conda-index可以把官方仓库的包同步到本地然后通过 HTTP 服务提供出去。这个方案配置起来比较复杂涉及到的内容也超出了这篇的范围。如果你有这方面的需求可以先去了解一下conda-mirror这个工具它的文档写得还算清楚。8. 一套可以直接抄的完整配置流程8.1 新机器从零开始的完整步骤假设你刚装好 Anaconda什么都没配过下面是完整的操作流程第一步确认 conda 可用conda --version第二步备份如果已有.condarccp ~/.condarc ~/.condarc.bak 2/dev/null || echo no existing condarc第三步写入清华源配置cat ~/.condarc EOF channels: - defaults - conda-forge default_channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ custom_channels: conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud show_channel_urls: true channel_priority: flexible EOF第四步清理索引缓存conda clean -i第五步验证conda config --show-sources conda install requests -y如果conda install的输出里下载地址是mirrors.tuna.tsinghua.edu.cn那就说明配置成功了。8.2 配置文件的版本管理建议如果你有多台机器或者经常重装系统建议把.condarc文件纳入版本管理。我自己的做法是在 GitHub 上建一个私有仓库专门放各种开发环境的配置文件.condarc、.gitconfig、.zshrc这些都放在里面。新机器上 clone 下来软链接到用户目录几分钟就能把环境配好。# 示例从配置仓库恢复 git clone gitgithub.com:yourname/dotfiles.git ~/dotfiles ln -sf ~/dotfiles/.condarc ~/.condarc这样做的好处是配置不会丢而且每次调整都有记录出问题了能回滚到之前的版本。8.3 团队协作时的统一配置方案如果你在团队里负责环境管理建议把.condarc模板放到项目的docs/或者scripts/目录下然后在 README 里写清楚配置步骤。更规范的做法是写一个初始化脚本#!/bin/bash # setup_conda.sh set -e CONDARC_PATH$HOME/.condarc if [ -f $CONDARC_PATH ]; then cp $CONDARC_PATH $CONDARC_PATH.bak.$(date %Y%m%d%H%M%S) fi cat $CONDARC_PATH EOF channels: - defaults default_channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ show_channel_urls: true channel_priority: flexible EOF conda clean -i echo conda 源配置完成新同事入职的时候跑一下这个脚本就行不用每个人都去手动配。脚本里带了备份逻辑即使之前有配置也不会丢。8.4 验证配置生效的三种方法配完之后怎么确认真的生效了我一般用三种方法交叉验证第一种看conda config --show-sources的输出确认配置文件路径和内容正确。第二种跑conda install装一个小包看下载地址是不是镜像地址。第三种用conda search搜索一个包看返回的 channel 信息conda search numpy --info输出里会显示包的 channel 和 URL如果是镜像地址就说明生效了。这三种方法各有侧重第一种看配置第二种看实际下载第三种看索引来源。三个都对上了基本就不会有问题。9. 一些容易被忽略的细节9.1 show_channel_urls 这个参数建议打开show_channel_urls: true这个配置我强烈建议打开。它的作用是在安装包的时候显示包的来源 channel 和 URL。虽然会让输出多几行但排查问题的时候非常有用。比如你发现某个包是从官方源下载的那就说明镜像源里没有这个包或者配置有问题。默认情况下这个参数是 false输出里只显示包名和版本不显示来源。对于新手来说可能觉得简洁但一旦出问题就抓瞎了。9.2 channel_priority 设成 strict 的利弊前面提过channel_priority这个参数这里再展开说一下。设成strict之后conda 会严格按照channels列表的顺序选包前面的 channel 里有的包就不会去后面的找。这样做的好处是版本来源明确不容易出现依赖冲突。坏处是如果前面的 channel 里没有你需要的包conda 不会自动去后面的找直接报PackagesNotFoundError。我的建议是如果你对环境的版本控制要求很高比如做生产部署可以用strict。如果是日常开发用默认的flexible就好省心。9.3 镜像源的同步延迟问题国内镜像源虽然快但同步是有延迟的。特别是一些刚发布的新版本包官方源上有了镜像源可能还没同步过来。这时候你有两个选择一是等几个小时再试二是临时用官方源装。临时用官方源的方法是在命令里直接指定 channelconda install -c https://repo.anaconda.com/pkgs/main/ 包名但这样装完之后下次更新这个包的时候可能会从镜像源拉取导致版本不一致。所以更好的做法还是等镜像同步或者去镜像站的页面看看同步状态。清华源和阿里云的镜像站都有同步状态的页面能看到各个仓库最后一次同步的时间。如果你发现某个仓库很久没同步了可以在镜像站的 issue 区反馈一般都会很快处理。9.4 conda 和 pip 混用时的源配置很多人是 conda 和 pip 混用的conda 装不了的包用 pip 装。这时候要注意pip 的源和 conda 的源是分开配置的。你换了 conda 的源pip 还是走默认的 PyPI速度一样慢。pip 换源的方法是创建~/.pip/pip.confLinux/macOS或%USERPROFILE%\pip\pip.iniWindows[global] index-url https://pypi.tuna.tsinghua.edu.cn/simple trusted-host pypi.tuna.tsinghua.edu.cn这样 conda 和 pip 都走国内源整体体验会好很多。但要注意conda 环境和 pip 安装的包有时候会有冲突特别是涉及到二进制依赖的时候。我的原则是能用 conda 装的就用 condaconda 里没有的再用 pip并且尽量在 conda 环境里用pip而不是全局的 pip。9.5 定期检查配置是否被覆盖最后分享一个习惯定期用conda config --show-sources检查一下配置。有时候你装了某个工具或者跑了某个脚本它可能会修改.condarc文件。如果你发现 conda 突然变慢了第一件事就是检查配置文件有没有被改。我自己就遇到过这样的情况装了一个公司的内部工具它自动往.condarc里加了一个内部的 channel结果那个 channel 的服务器不稳定导致每次 conda 操作都要等很久。后来把那个 channel 删掉就恢复正常了。配置这东西配好之后不是一劳永逸的定期检查一下能避免很多莫名其妙的问题。尤其是团队协作的环境别人的操作可能会影响到你的配置多留个心眼总没错。