尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

Ubuntu与Anaconda换源全攻略:apt、conda、pip镜像配置与避坑指南

发布时间:2026/9/30 1:13:17

资讯中心
01
ARTICLE

Ubuntu与Anaconda换源全攻略:apt、conda、pip镜像配置与避坑指南

Ubuntu与Anaconda换源全攻略:apt、conda、pip镜像配置与避坑指南
在Ubuntu上折腾Anaconda环境十个有九个都被“慢”字折磨过。不管是conda install pytorch卡出天际还是apt-get update半天没反应归根到底都是卡在“默认源离你太远”这个问题上。我这台装了双系统的Ubuntu机器从22.04一路用到24.04中间换了至少三次源方案踩过404、踩过SSL报错、也踩过源混用导致的依赖冲突今天这篇就专门把apt源、conda源、pip源这三件事一次说透。适合刚装完Ubuntu和Anaconda的新手也给那些觉得“自己源没问题”的老手一个排查思路——毕竟换源不是改一行配置就完事后面藏着一堆坑。1. 换源前必须搞清楚的底层逻辑1.1 为什么在Ubuntu上一定要换源先说最根本的问题官方源到底慢在哪。Ubuntu的apt默认源指向的是archive.ubuntu.comconda默认源指向的是repo.anaconda.compip默认源是pypi.org这些服务器的物理位置都在国外。国内访问的时候数据包要经过长距离的国际链路传输丢包和延迟会明显放大表现就是你看到的“几十KB/s的龟速下载”或者“干脆超时无响应”。镜像站的原理其实特别简单国内的一些高校和云厂商搭了服务器定期从上游官方仓库做一次全量同步把整个软件仓库“搬到”国内然后对外提供下载服务。既然物理距离变近了速度自然就上来了。实测的情况下同一台机器还源前conda下载速度只有几十KB换完清华源能稳定跑到10MB/s以上差距非常直观。这里有个容易混淆的点apt源、conda源、pip源它们管的是三套完全不相干的东西。用apt install装的是Ubuntu系统包比如gcc、openssh-server用conda install装的是Anaconda发行版维护的Python包和预编译库比如cudatoolkit、pytorch用pip install装的是PyPI上的Python包比如requests、django。三者互不替代所以换源也是三件事漏掉任何一个总有一个地方会继续慢。1.2 三类源分别解决什么问题源类型对应命令管理内容典型配置位置apt源apt update/apt installUbuntu系统级软件包/etc/apt/sources.listconda源conda install/conda createAnaconda虚拟环境包~/.condarcpip源pip installPython包~/.pip/pip.conf注意表格里的配置位置是针对单用户的如果你机器上有多个用户都要用conda或者你有root权限想给整台机器做全局配置那么conda源还可以写到/etc/conda/.condarcpip源可以写到/etc/pip.conf后面我会单独讲这个区别。很多人喜欢把conda源和pip源混为一谈但这两个的镜像仓库完全是独立的。清华源上conda走的是https://mirrors.tuna.tsinghua.edu.cn/anaconda/这个路径pip走的是https://pypi.tuna.tsinghua.edu.cn/simple这个路径。你要是把pip的源地址填到conda的配置文件里它肯定报404反过来也一样。1.3 换源前必须确认的三条基础信息动手之前先把这三样东西搞清楚不然折腾半天可能白干。第一Ubuntu的版本代号。不同版本的apt源地址里路径最后一段是版本代号写错了直接404。查看命令lsb_release -cs如果是24.04输出是noble22.04输出是jammy20.04输出是focal。后面写源配置的时候这个代号要精确对应。第二Anaconda的安装路径。这决定了conda命令的归属也影响你后面对环境变量的判断。用which conda查看如果输出类似/home/yourname/anaconda3/bin/conda说明是用户目录安装如果输出/opt/anaconda3/bin/conda就是系统级安装。两种安装方式下.condarc配置的生效路径会有差异。第三当前pip配置里的残留项。很多人以前手动改过pip源时间久了就忘了。先跑一下pip config list如果里面已经有一堆旧配置后面可能需要先清理否则新改的配置可能被旧的覆盖掉排查问题的时候特别容易困惑。2. Ubuntu系统级apt源更换基础中的基础2.1 备份源文件别上来就删第一步永远是备份。虽然改坏了一个配置文件不至于让系统瘫痪但apt源坏了之后你连apt install都没法用手边又没有离线包的时候会非常被动。备份很简单sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak现在较新版本的Ubuntu把源拆成了两种形式传统的/etc/apt/sources.list单文件和Ubuntu 24.04开始引入的/etc/apt/sources.list.d/ubuntu.sources新格式。如果你的系统是后者上面那行cp命令可能发现文件不存在那就备份整个目录sudo cp -r /etc/apt/sources.list.d /etc/apt/sources.list.d.bak这里给个实际经验不管系统默认用的是哪种格式备份做一下不亏。因为镜像站对新格式的支持也是最近才跟上的万一你要降级回原版系统源有个备份文件在两秒钟就能还原。2.2 编辑apt源配置用清华镜像我用清华源比较多其他镜像站的配置方式几乎一样就是域名不同。如果你用的是传统sources.list格式直接编辑sudo vim /etc/apt/sources.list然后把文件里的所有内容替换成下面这些。注意noble要改成你实际的版本代号deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ noble-security main restricted universe multiverse如果你是Debian系的sources格式也就是24.04默认的ubuntu.sources那内容是另一种写法Types: deb URIs: https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ Suites: noble noble-updates noble-backports noble-security Components: main restricted universe multiverse Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg扩展一句很多教程喜欢同时打开deb-src源也就是源码包但我个人建议默认关掉。deb-src会额外拉取大量的源码索引拖慢apt update的速度而且对绝大多数普通用户来说用不上。真需要源码包的时候再临时加一行注释打开就行没必要平时开着给自己添堵。2.3 apt update生效验证改完配置更新索引sudo apt update这一步会重新拉取软件包列表如果输出里的Hit和Get速度明显变快没有404和Failed就说明源生效了。然后再验证一下apt policy这个命令会列出当前所有的源和优先级。如果看到http://mirrors.tuna.tsinghua.edu.cn/ubuntu/在列表里且优先级是500说明配置正确。我遇到过一种情况改完apt源之后apt update报Certificate verification failed也就是证书验证失败。这个和清华大学镜像站的历史问题有关——早些年它用过自带证书现在一般不会有这个问题。如果真遇到先检查系统时间是不是不对date命令看一下时间偏差会导致TLS握手失败。别急着关证书验证优先排查系统时间。3. conda源配置Anaconda加速的关键环节3.1 什么是.condarc在哪生成.condarc是conda的配置文件名字前面带点是隐藏文件。它控制着conda从哪下载包、显示什么渠道、是否开启strict channel优先级等。文件一般放在当前用户的家目录下cd ~ touch .condarc很多新手的误区是去Anaconda的安装目录找这个文件其实那个目录是系统级的优先级低于用户目录。除非你有特殊需求否则统一配置在~/.condarc就对了。我建议直接用conda config命令来生成和操作这个文件而不是手动vim。命令式操作的好处是conda自己会处理好格式不会因为写错缩进导致整个文件失效conda config --set show_channel_urls yes执行完这条你的~/.condarc文件就自动生成了里面会多一行show_channel_urls: true。这一步相当于“初始化”了conda的配置文件机制后面我们再往里灌镜像源配置。3.2 写入清华conda镜像源直接编辑~/.condarc把下面这段内容放进去。我实测过清华源是目前国内conda镜像里同步稳定、速度也靠谱的一个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解释一下这里的逻辑。channels里的defaults是让你继续使用默认的Anaconda仓库但接着的default_channels把默认仓库的实际URL从官方地址重定向到了清华镜像。custom_channels解决的是第三方channel的映射——你写conda install -c conda-forge somepackage的时候conda会去https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge找包而不是去国外的conda.anaconda.org。写得直白一点如果你只改了channels但不改default_channels和custom_channels那conda还是去官方地址拉包换源等于没换。这是很多教程没讲到位的坑。如果你更喜欢用中科大源或者阿里云源把上面的域名整体替换就行。阿里云conda源的配置稍微有点不一样它的路径不带anaconda这段建议直接参照阿里云开发社区最新的配置样例因为它的路径结构做过调整旧教程里的URL很可能会404。3.3 conda换源后的生效验证改完源之后不能直接conda install看效果因为conda会缓存索引。正确操作是conda clean -i -y这一步清除的是之前从官方源拉取的索引缓存。然后新建一个测试环境感受一下速度conda create -n test_speed python3.10 -y如果输出里出现Downloading and Extracting Packages且进度条刷刷走说明源生效了。如果速度还是慢那多半是http而不是https的遗留配置或者在缓存清理这一步漏了。顺手看一眼当前实际生效的源conda config --show channels conda config --show default_channels这两条命令会打印出conda解析后的channel地址核对一下域名是否已经指向了镜像站。3.4 多用户环境的conda源配置差异单用户配置.condarc在~/.condarc但如果是多用户共用的Anaconda最好在/etc/conda/.condarc这个路径做全局配置。这个文件的优先级低于用户级也就是说每个用户可以在自己的~/.condarc里覆盖全局配置。还有一个细节conda的channel优先级。如果你在channels里写了多个源比如同时写了defaults和conda-forgeconda会从左到右依次查找包左侧优先级更高。默认策略下如果前面的源找不到某个包它会自动去后面的源找。但如果你开了channel_priority: strict那么conda只会从优先级最高的channel里找包找不到就直接报错。这个设置适合对包来源有强制要求的场景普通用户保持默认的flexible就好。4. pip源配置Python包管理加速4.1 pip配置文件的位置与优先级pip源和conda源是两回事很多新手在Anaconda环境里直接用pip install结果发现还是慢原因就是pip还在用官方源。pip的配置文件查找有几个层级从高到低是命令行参数-i指定用户级配置文件~/.pip/pip.conf或~/.config/pip/pip.conf全局配置文件/etc/pip.conf或/etc/xdg/pip/pip.conf这里有个好记的口诀越靠近用户优先级越高。命令行参数最高其次用户配置最后系统配置。所以如果你以前在命令行里硬编过-i参数那配置文件怎么改都会被覆盖排查的时候就看看有没有什么脚本里写死了源地址。另外要注意~/.pip/pip.conf和~/.config/pip/pip.conf如果同时存在前者生效后者被忽略。建议统一使用~/.pip/pip.conf因为Anaconda环境下pip对~/.pip目录的兼容性最好。4.2 修改pip源配置文件手动创建并编辑~/.pip/pip.confmkdir -p ~/.pip vim ~/.pip/pip.conf填入清华源配置[global] index-url https://pypi.tuna.tsinghua.edu.cn/simple trusted-host pypi.tuna.tsinghua.edu.cn如果更愿意用阿里云就写[global] index-url https://mirrors.aliyun.com/pypi/simple/ trusted-host mirrors.aliyun.com这里有个网上讨论比较多的问题trusted-host到底要不要写。它是用来跳过HTTPS证书校验的但在清华和阿里这些官方镜像站的场景下它们的证书都是正规机构签发的理论上不需要写。我之前踩过一个坑某些老教程里把trusted-host写得很大导致pip不再校验证书虽然速度没影响但安全性上打了折扣。我的建议是优先只配置index-url如果pip报SSL: CERTIFICATE_VERIFY_FAILED再回头检查系统证书链而不是盲目加上trusted-host。如果确定是镜像站自身的证书问题或者内网环境需要再加也不迟。4.3 pip源换完怎么验证最直接的验证方式是安装一个小体积的包看日志里的URLpip install --no-cache-dir requests -v-v参数会输出详细的下载日志正常情况下你会看到类似Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple的信息。如果打印的还是https://pypi.org/simple说明配置没生效按优先级顺序去排查是不是配置文件路径写错或者有环境变量PIP_INDEX_URL干扰了。另外强烈建议给pip加一个默认的no-cache-dir习惯或者定期用pip cache purge清理缓存。缓存的坑在于有时候你换源之后装包看似很快实际上用的是旧源拉下来的缓存文件时间长了把新旧包的版本搞混。清一次缓存让pip从新源重新拉一遍至少装大包之前是值得做的。5. 换源后的踩坑实录与排查技巧5.1 conda更新报404版本与镜像兼容问题清华镜像站对conda版本是有最低要求的。如果你用的conda版本太老比如4.8以下它请求的仓库元数据路径和老版本的repo格式不匹配镜像站会返回404。这个问题的特征是其他源都能用唯独conda update的时候报CondaHTTPError: 404 NOT FOUND。解决办法按顺序来先试着直接升级conda本身conda update conda -c defaults如果这条命令也报404那就临时加一个官方源地址把conda升上来conda update conda -c https://repo.anaconda.com/pkgs/main升完级再切回镜像源配置问题一般就解决了。这属于老机器新场景的经典坑重装系统几乎不会遇到但如果你是从很旧的Anaconda版本一路升级上来的那就很容易撞上。5.2 pip换源后某些包反而装不了一个真实经历我在清华pip源上装某个包的夜间版结果它报No matching distribution found。查了一下发现这个包在官方PyPI上确实存在但清华源的同频率是定时同步的它还没有把最新的包同步过来。这不是配置问题而是镜像源同步延迟。这种情况下有两个选择一是等镜像站同步完成通常也就一两天另一个是临时指定官方源装这一个包pip install package_name -i https://pypi.org/simple注意这个-i参数只对当前这一条命令生效不会改变全局配置。这是一个很实用的临时切换手段不会污染你的环境。5.3 conda和pip混用导致的源冲突这个问题堪称最常见的“伪源”问题。很多教程让用户在conda环境里用pip安装包说速度更快这么干本身没错但如果你pip的源和conda的源都指向不同镜像那会导致同一个包在两个仓库里的版本不一致时间长了环境变得非常混乱。我的习惯是在conda环境里装包以conda为主conda源配清华如果某个包conda上没有才用pip并且pip源也配同一个镜像站。宁可两个都配清华也不要用“conda用清华、pip用阿里”这种混搭。镜像站的同步时间点不同包版本可能存在几个小时到几天的偏差一旦你因为某个包追新版本可能就是怀疑人生的开始。还有一个非常隐蔽的坑在conda环境里使用pip install --user。--user参数会把包装到~/.local目录下而不是conda环境里导致你在激活的环境里import不到或者换个环境神奇的“复活”。这不是源的问题是环境隔离被绕过了。在conda环境里永远不要加--user。5.4 速度慢的终极排查法如果换完源还是慢别急着怀疑镜像站。先做一次基准测试看看到底是网络问题还是源问题wget -O /dev/null https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/repodata.json这条命令从清华源拉取一个相对较大的文件到空设备测的就是纯粹的网络下载速度。如果这个速度正常说明你到镜像站的链路没问题那问题可能出在conda或者pip的HTTP请求并发配置上。可以试试在conda配置里加一行remote_max_retries: 5 remote_read_timeout_secs: 30.0这两个参数可以缓解网络抖动导致的下载中断问题。如果连wget都慢那基本就是你本地网络到目标机房的线路问题换哪个源都差不多。5.5 镜像站的Notices与公告镜像站并不总是无条件的稳定。清华、中科大这些镜像站偶尔会因为磁盘容量、上游故障等原因暂停某个仓库的同步或者调整目录结构。如果你隔了很长一段时间回来发现某个源突然404了先别急着怀疑自己配置有误去镜像站的官网公告页看一眼看看是不是有临时变更。6. 一些我个人用着顺手的经验补充先说结论我个人的最终方案是apt源用清华conda源用清华主仓库conda-forgepip源用阿里。这套组合我用了大半年基本没出过问题。有一个小技巧值得分享每次配置完源之后建议做个备注文件放在家目录比如source_config_notes.md把这次换源的日期、使用的镜像站、改了哪几个文件都记下来。看起来很傻但半年之后你再需要排查环境问题这份简单的笔记能帮你省出至少半小时查历史配置的时间。还有一个容易被忽略的点ubuntu.sources格式和sources.list格式的转换。如果你用的是Ubuntu 24.04初版自带的ubuntu.sources格式想换回sources.list旧格式需要把/etc/apt/sources.list.d/ubuntu.sources里的内容改掉或者禁用。我自己就曾经同时启用两份源文件apt update的时候拉重复数据还因为两套源优先级不同差点把包比较器的索引搞乱。稳妥的检查方式ls /etc/apt/sources.list.d/看看这个目录下有哪些文件确保不存在多个源的重复定义。最后再提一个很多人没想到的点Anaconda的pkgs/main仓库默认包含Python解释器、numpy等基础包conda-forge仓库包含大量第三方扩展包。如果你用conda-forge的频率很高建议在.condarc里把它的custom_channels配置好否则每次-c conda-forge都会去官方源。这不是必然出错的场景但确实是很多人配置完清华源之后conda-forge渠道依然速度感人的原因。说实话换源这件事本身并不复杂复杂的是换完之后系统里可能残留下各种老配置和新配置互相打架的问题。我写这篇东西的核心目的就是希望你在配置的时候就能预判这些坑而不是等出了问题再回来翻文档。建议收藏起来下次新装机器的时候照着走一遍基本十分钟就能搞定。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。