ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

conda与pip换源实战:清华源、阿里云镜像配置与避坑指南

conda与pip换源实战:清华源、阿里云镜像配置与避坑指南 1. 镜像到底改了什么先说清楚这场替换游戏的底层逻辑早些年配 conda 和 pip 国内镜像很多人第一步就是百度搜清华源 URL复制粘贴到配置文件里然后跑一遍conda install发现要么变快了要么报错接着再搜下一个错误。这样来回折腾一上午最后可能配好了但完全不知道自己改了什么。我刚开始用 Python 做数据分析那阵也是这样直到后来被一个为什么 conda 换源之后安装包还是从 defaults 走的问题折磨了一整天才彻底搞明白这背后的机制。其实 conda 和 pip 的源本质就是一个软件仓库的 URL 地址。默认情况下conda 用的是https://repo.anaconda.com/旗下的几个仓库pip 用的是https://pypi.org/simple/。这两个服务在国外跨海传输的延迟和丢包率直接决定了你有没有下载慢到怀疑人生的体验。国内镜像源做的全部事情翻译成大白话就是把官方仓库的内容定时同步到国内服务器上然后把你的下载请求引导到离你最近的服务器。这里有一个容易混淆的点也是大多数人配置出问题的根源——conda 和 pip 的镜像 URL 格式完全不是一回事。pip 的镜像地址长这样https://pypi.tuna.tsinghua.edu.cn/simple注意最后的/simple这是 PyPI 提供的 simple index 接口格式pip 是通过这个接口去解析某个包名对应哪些下载链接的。而 conda 的镜像地址长这样https://mirrors.tuna.tsinghua.edu.cn/anaconda/这后面其实挂着一整套 Repo 结构下面还有pkgs/main、pkgs/free、cloud/conda-forge这些子路径。如果你把 pip 的镜像地址格式套到 conda 上或者反过来必报错区别只是报错早晚的问题。再来明确一个概念我们常说的清华源、阿里源、中科大源到底选哪个这取决于你所在网络环境对这些特定线路的连通性。下面这个表是我在不同网络环境下实测的感受镜像源pip 镜像地址conda 镜像地址体验备注清华大学 TUNAhttps://pypi.tuna.tsinghua.edu.cn/simplehttps://mirrors.tuna.tsinghua.edu.cn/anaconda/同步快用户多高峰期偶尔限流阿里云https://mirrors.aliyun.com/pypi/simple/https://mirrors.aliyun.com/anaconda/带宽大速度稳定推荐中科大 USTChttps://mirrors.ustc.edu.cn/pypi/simple/https://mirrors.ustc.edu.cn/anaconda/学术网络环境表现突出腾讯云https://mirrors.cloud.tencent.com/pypi/simple/https://mirrors.cloud.tencent.com/anaconda/云服务器内网速度快华为云https://mirrors.huaweicloud.com/repository/pypi/simple/https://mirrors.huaweicloud.com/anaconda/生态相对完整较稳提示没有最好的源只有最适合你当前网络的源。我自己的经验是家宽网络优先试清华和阿里公司专线或云服务器优先试腾讯和华为。判断标准很简单配置完之后随便pip install一个大点的包看下载速度稳定在多少。2. conda 换源实操从命令行临时参数到 .condarc 文件的完整闭环2.1 最快的临时方案命令行直接指定如果你只是临时装一个包不想改动任何配置文件conda 是支持用-c参数临时指定 channel 的conda install numpy -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/这个参数的作用范围只对当前这条命令有效不会写进任何配置文件。适合偶尔用一次、不想让全局配置变复杂的情况。但这里有个细节很多人不知道用-c指定镜像时建议把pkgs/main和pkgs/free都显式写出来否则 conda 会默认先找defaults再找你的-c如果 defaults 那边网络抽风这一条命令仍然可能卡死。2.2 永久配置写 .condarc 文件conda 的永久配置全部集中在~/.condarc这个文件里。Windows 上路径一般是C:\Users\你的用户名\.condarcLinux 和 macOS 一般在~/.condarc。手动新建文件后写入以下内容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/free custom_channels: conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud这里有个关键的设计思路channels列表里只写defaults而default_channels负责把defaults 到底是什么重新指向清华。这样做的好处是你在命令行里看到的所有 channel 名称和逻辑都不变但实际下载走的全是国内镜像。而custom_channels里的那些conda-forge、bioconda、pytorch等第三方 channel 是另一个单独的逻辑模块。如果你平时会装深度学习相关的东西pytorch这个 channel 一定要配否则conda install pytorch会从官方源拉那个体量够你等半小时。2.3 验证配置是否生效配置完后有两招可以验证第一招看源地址conda config --show-sources conda config --show channels第二招装包时看进度条后面的链接地址如果显示的是mirrors.tuna.tsinghua开头就说明配置已经生效。另外提一嘴.condarc是 YAML 格式缩进必须严格用两个空格对齐不能用 Tab。很多新手在这个文件上栽的跟头基本都是缩进问题导致 conda 直接忽略这个文件、默认走官方源然后还以为自己配了镜像。2.4 创建新环境时镜像怎么配合热词里反复出现conda create -n 环境名 python3.12这类命令这也顺便说一下conda create -n zotero-pdf2zh-server python3.12这条命令在换源之后会从清华的pkgs/main直接拉取 Python 3.12 的元数据和依赖包。需要注意的是如果你之前用过conda config --add channels往 channels 列表里反复添加过多个地址channels列表会变得很乱执行创建环境时 conda 会依次解析所有 channel每次都慢。我的建议是创建新环境前先conda config --remove channels 渠道地址清掉所有历史残留记录再重新按照上面的 .condarc 配置。3. pip 换源实操配置文件、环境变量和三个源的真实速度差异3.1 pip 配置文件到底放哪pip 的配置文件和 conda 逻辑类似但路径更多优先级也有讲究。官方会按优先级从高到低依次读取以下位置系统用户级配置路径全局配置路径Linux~/.pip/pip.conf或~/.config/pip/pip.conf/etc/pip.confWindowsC:\Users\用户名\pip\pip.ini或%APPDATA%\pip\pip.ini系统盘pip.inimacOS~/Library/Application Support/pip/pip.conf/Library/Application Support/pip/pip.conf最稳的方法是直接新建用户级配置文件。Linux 和 macOS 执行mkdir -p ~/.pip cat ~/.pip/pip.conf EOF [global] index-url https://mirrors.aliyun.com/pypi/simple/ trusted-host mirrors.aliyun.com EOFWindows 则在C:\Users\你的用户名\pip\目录下新建pip.ini文件内容同上。trusted-host这一行必须写否则某些网络环境下 pip 会因为 HTTPS 证书校验问题直接拒绝连接镜像站。3.2 清华、阿里、腾讯源的真实速度对比我拿一个实际项目做过对比测试安装pandas这个大约 10MB 的包在相同网络环境下三个源的表现如下清华源首次连接有 1~2 秒延迟之后稳定在 4~6MB/s阿里源连接延迟极低稳定在 6~8MB/s腾讯源打通 HTTPS 握手稍慢但下载速度与阿里接近这只是单次测试结果不同时段、不同运营商差异会很大。但有一点是共通的都比默认官方源快 10 倍以上。官方源在我这边的速度常年徘徊在 100~300KB/s偶尔还直接断连重试。3.3 更狠的做法环境变量全局控制除了配置文件还可以通过环境变量强制指定export PIP_INDEX_URLhttps://mirrors.tuna.tsinghua.edu.cn/simpleWindows PowerShell 里用$env:PIP_INDEX_URLhttps://mirrors.tuna.tsinghua.edu.cn/simple环境变量的优先级高于配置文件。如果你在公司电脑上不想改动全局配置、只想在当前终端会话里临时换源用这个最方便。另外如果你想在某个虚拟环境里单独用另一个源也可以在conda activate之后再设置环境变量实现环境隔离换源。3.4 单次安装怎么临时指定如果你只是装一个包不想动任何配置pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple这里的-i全称是--index-url只对当前命令生效。如果某些包在镜像源上还没同步通常镜像同步有 5~15 分钟延迟冷门包可能更久可以临时切换回官方源pip install 冷门包 -i https://pypi.org/simple这也解释了为什么 pip 换源之后偶尔会报找不到某个版本——不是你的配置错了只是那个包的最新版本还没来得及被镜像站同步过去。4. 换源后最容易踩的五个坑从 CondaHTTPError 到 no module named pip4.1 CondaHTTPError 404 或 Unauthorizedchannels 列表优先级问题最常见的一个报错长这样CondaHTTPError: HTTP 404 NOT FOUND for url https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/...很多人第一反应是清华源挂了其实并不一定。排查链路是这样的先执行conda config --show channels如果发现 channels 列表里同时存在defaults和https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main这两个入口conda 在解析时会产生重复和冲突。因为defaults本身已经被default_channels重定向到清华了你再手动添加一个镜像 channel相当于让 conda 去两遍同一个仓库但解析逻辑绕了一圈404 就出现了。正确做法是清空残留记录只保留配置核心conda config --remove-key channels conda config --remove-key default_channels conda config --remove-key custom_channels然后重新按照前面的.condarc完整配置写入。4.2 conda init 警告和激活失败热词里有一条很典型condaerror: run conda init before conda activate。这种情况一般出现在你安装了 Miniconda 之后没有初始化 shell直接去执行conda activate。在 Windows 上尤其常见因为安装器未必自动往 PowerShell 或 CMD 里注入初始化脚本。解决方式分两步conda init然后重启终端。如果还是不行检查系统环境变量Path里是否包含你的Miniconda安装路径\Scripts和你的Miniconda安装路径没有的话手动加进去再重启终端。这个问题和换源本身没关系但排查时容易把二者混在一起。我见过有人在配好清华源之后发现conda activate用不了以为换源搞坏了环境折腾半天其实只是 shell 初始化的问题。4.3 SSL 证书报错trusted-host 必须配上pip 报SSLError或者WARNING: The repository located at ... is not a trusted host顺手把trusted-host写上就解决[global] index-url https://mirrors.tuna.tsinghua.edu.cn/simple trusted-host mirrors.tuna.tsinghua.edu.cn这里解释一下原理部分公司内网会自签 HTTPS 证书或者本地安装了抓包工具替换了根证书pip 在校验镜像站证书时发现链不完整就会直接拒绝。trusted-host的作用是绕过证书校验只对指定域名生效风险范围可控。如果仍然报错可以再设置ssl_verify false但这样会让所有下载都走非校验通道安全上不建议长期使用。4.4 no module named pipPython 环境里 pip 消失了这个报错通常不是换源导致的但很多人在换源测试时正好碰到No module named pip常见原因是某些 Python 安装方式比如从官网下载的嵌入式版、或者系统自带的 Python只带了标准库没有包含 pip。修复方式python -m ensurepip --upgrade如果这招无效更通用的方法是下载get-pip.pycurl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python get-pip.py热词里还有一条github国内镜像站你可以用 GitHub 的镜像加速通道去拿这个脚本速度会快很多。不过平时的包安装就别用 GitHub 镜像了那是另一套体系下面会单独说。4.5 conda 和 pip 混装的依赖冲突镜像不能解决的根本性问题这是个大坑和换源无关但换源之后更容易暴露。很多人配好镜像后发现conda install装包很快但一跑代码就报ImportError检查才知道是版本不匹配。conda 的依赖解析器是按conda 生态里的包版本来求解的pip 是按PyPI 生态里的包版本来求解的。两套生态的包版本号可能一样但它们内部依赖的底层库版本约束不同。比如脑子里同时有 conda 装的numpy 1.26.4和 pip 装的pandas 2.2.0conda 认为 pandas 依赖的 numpy 是另一个版本pip 认为没问题最终跑起来可能就崩了。稳妥策略是能用 conda 装的就用 conda 装conda 没有的再用 pip 补。新建环境后先conda install装齐主要依赖再用 pip 装纯 Python 包的补丁。别反过来。4.6 缓存没刷新换源后还在用旧包配置完镜像之后如果遇到版本号明明升级了但装的还是旧版的情况先别怀疑源没同步先看看 pip 缓存pip cache purgeconda 缓存清理conda clean -a缓存是加速工具也是灵异问题的温床。换源之后清一次缓存能省掉后面一小时的排查时间。5. 镜像不止 conda 和 pipGitHub、HuggingFace、npm、Docker、Ollama 的联动配置5.1 GitHub 仓库和二进制文件下载加速热词里同时出现了github国内镜像站、https://github.com/comfyanonymous/comfyui 国内镜像这些内容说明一个常见场景你在配好 conda 和 pip 镜像后发现访问 GitHub 下载一个项目源码或者 release 包还是慢。这里有一个容易混淆的地方GitHub 的镜像不属于 conda/pip 体系的镜像它们是独立的一套加速服务。做法通常是去 GitHub 仓库页面找到对应的仓库地址使用公开的 GitHub 代理镜像站点替换github.com前缀。git clone https://github.com/xxx/yyy.git # 替换为 git clone https://ghproxy.com/https://github.com/xxx/yyy.git这类工具还有很多变体但本质都是给 URL 前面加一层代理转发。注意安全原则认准公开可信的镜像站不要在来历不明的平台上输入自己的 GitHub Token。5.2 HuggingFace 模型下载加速热词里有huggingface国内镜像这跟你用不用 conda/pip 直接挂钩——因为用transformers跑模型时下载权重文件走的是 HuggingFace 的 CDN而 HuggingFace 的官方域名在国内网络环境下速度同样不稳定。最省事的方法是设置环境变量export HF_ENDPOINThttps://hf-mirror.comWindows 下同理设置HF_ENDPOINT环境变量。设置之后所有from_pretrained拉取预训练权重的请求都会自动走 hf-mirror模型文件下载速度直接翻几倍。5.3 npm 和 Docker 镜像仓库如果你的项目不止 Python 味还混着前端和容器化部署下面这些顺手也配上npmnpm config set registry https://registry.npmmirror.comDocker 需要改守护进程配置文件。Linux 在/etc/docker/daemon.jsonWindows Docker Desktop 直接在设置里新增 registry-mirrors{ registry-mirrors: [https://docker.mirrors.ustc.edu.cn] }改完重启 Docker 服务sudo systemctl restart docker5.4 Ollama 模型仓库镜像热词里有ollama国内镜像源。Ollama 拉取模型时默认从 Ollama 官方模型仓库下载同样有速度问题。配置方式是设置export OLLAMA_HOST127.0.0.1:11434或者指定镜像源地址不同版本和客户端略有差异一般搜对应版本的ollama 设置镜像源就能找到现成配置方案。这个生态镜像的配置思路是贯通的镜像解决的是下载慢这一个共性问题具体到不同工具只是改 URL 的位置不同而已。conda 改.condarcpip 改pip.confnpm 改registryDocker 改daemon.jsonHuggingFace 改环境变量本质都是同一件事把仓库地址指向离你最近的服务器。我个人在配完这一整套之后最大的感受是真正值得花时间研究的不是哪个源快而是我到底改了什么、为什么这个改动会生效。一旦想通了 URL 和配置文件的关系之后遇到任何工具的换源问题你都能在五分钟内自己解决而不是又去搜索引擎里翻一篇过时的教程。最后再分享一个小技巧配置完之后优先跑一个小包的安装测试比如pip install requests或conda install -c conda-forge pandas确认无报错后再装大包这样即便出了问题排查成本也低得多。
返回列表