☰
树莓派安装Archiconda与换源教程:ARM架构conda环境搭建指南
2026/10/15 16:15:06 网站建设 项目流程

树莓派折腾记写了好几个系列,今天这篇把目标锁定在 Archiconda 的安装和更换源上。玩树莓派的朋友应该都遇到过这种场景:想在板子上跑 Python 数据分析或者机器学习项目,结果系统自带的 Python 是 3.9 但依赖包一装就版本冲突,于是想起在电脑上用得挺顺手的 conda 环境管理。正准备下载 Anaconda 安装脚本,却发现树莓派的 ARM 架构根本不支持官方安装包,折腾一圈不是下载失败就是运行报错。Archiconda 就是解决这个问题的社区发行版,而换源则是让包下载速度从“转圈十分钟”变成“秒下”的关键操作。这篇文章我会把从安装到换源的完整链路写清楚,适合刚入手树莓派、又被 Python 环境折腾到头疼的朋友直接抄作业。

1. 为什么树莓派上绕不开 Archiconda

1.1 官方 Anaconda 在树莓派上的“水土不服”

先聊清楚背景。树莓派用的是 ARM 架构处理器,和普通电脑的 x86 架构完全不同。Anaconda 官方发行版只提供 x86_64 和 x86 的安装包,不对 ARM Linux 做官方支持,所以你在官网找到的 Linux 版本下载下来,在树莓派上运行安装脚本,大概率会直接提示类似“cannot execute binary file”或“Exec format error”。这个错误出现的原因是 CPU 指令集不匹配,并不是安装命令写错了。就算绕过安装脚本直接解压包,里面的 conda、python 可执行文件也都是 x86 架构编译出来的,根本跑不起来。Miniconda 同样面临这个问题,官方并没有提供树莓派可用的 ARM 版本。

所以社区里就有人基于 Anaconda 的源码做了一款适配 ARM 架构的定制版,这就是 Archiconda。它保留了 conda 最核心的环境管理和包管理能力,预装了 Python 3.7 和一批常用的科学计算库,可以让树莓派用户获得和桌面端非常接近的 Python 工作流。这里的“接近”是相对而言的,如果你用过桌面的 Anaconda,切到 Archiconda 后会发现基本操作完全一致。

提示:安装前我强烈建议先备份 TF 卡上的重要数据,或者干脆做一份镜像备份。树莓派折腾环境的过程很容易把系统搞坏,尤其换源、改配置这种操作,错了无非改回来,但装错包版本或误删系统依赖就不是那么好恢复了。

1.2 为什么不是直接装 Python 而是用 conda

你可能想问:树莓派官方系统本来就带 Python,直接 pip install 不行吗?当然可行,但遇到特定项目时会很痛苦。比如一个项目要用 TensorFlow 或 OpenCV,另一个项目又只要轻量化的图像处理库,包的依赖版本一旦冲突,pip 会陷入“装 A 升降 B、装 B 卸载 C”的循环。conda 的“环境隔离”概念从根本上解决了这个问题,你可以为每个项目单独建一个 Python 环境,环境之间互不干扰,依赖干干脆脆。

conda 另一个优势是二进制分发机制。很多 Python 包在从源码编译时特别耗时,尤其是树莓派这种算力有限的设备,编译一个大型包可能几个小时就过去了。conda 直接下载预编译的二进制包,省去编译过程,速度体验完全不同。Archiconda 保留了这套机制,所以很多树莓派数据分析、边缘计算项目选它做基础环境,比一个个手动装依赖要省心得多。

2. 安装之前先弄明白的几件事

2.1 认清你的树莓派系统架构

安装之前的第一件事不是急着下载文件,而是确认系统架构。不同代次的树莓派和不同位数的系统,对应不同安装包。在终端执行:

uname -m

大多数树莓派 3B、3B+ 用户跑的是 32 位系统,输出通常是armv7l。树莓派 4B 以及更新型号如果装了 64 位系统,输出则是aarch64。这个输出结果直接决定你下载哪个安装包。

下面是常见的对应关系:

树莓派型号常见系统位数uname -m 输出Archiconda 包后缀
2B / 3B / 3B+32 位armv7larmv7
3B / 3B+64 位aarch64aarch64
4B / 400 / CM432 位armv7larmv7
4B / 400 / CM464 位aarch64aarch64
5 系列64 位aarch64aarch64

这里有个容易踩坑的点:同一块树莓派 4B 上,如果刷的是 32 位镜像,uname -m 就是 armv7l,虽然 CPU 本身是 64 位,但内核和用户态都是 32 位的,你必须下 armv7 包。反过来,如果你强行装了 aarch64 包,安装脚本会直接识别不了架构并退出。所以一定以指令输出为准,不要以自己的想象为准。

2.2 从哪下载、下载哪个包

Archiconda 的文件通常发布在代码托管平台的 release 页面里,你需要找文件名带有Archiconda3的.sh文件,比如Archiconda3-0.2.3-Linux-armv7.sh和Archiconda3-0.2.3-Linux-aarch64.sh两个版本。有些朋友会看到另一个类似的社区项目也走 ARM 适配路线,但 Archiconda 胜在针对树莓派生态的资料多、教程全,出了问题搜索时容易找到解决方案,所以我更推荐从它入手。

从托管平台直接下载在国内网络环境下经常超时或断线,这是很多人卡住的第一道坎。我的做法是:优先使用国内开源镜像站提供的下载加速路径,或者用带断点续传的下载工具。下载完成后先校验文件完整性:

sha256sum Archiconda3-0.2.3-Linux-armv7.sh

把输出结果和页面发布时记录的校验和对比,一致再继续。这一步能筛掉不少因为下载中断导致安装失败的“灵异事件”。

2.3 安装前检查脚本和依赖

下载完成后不要急着跑,先检查一下安装脚本本身。用file命令看文件类型:

file Archiconda3-0.2.3-Linux-armv7.sh

正常会输出POSIX shell script之类的信息。再确认系统基础依赖齐全。树莓派系统一般没问题,但如果是很精简的系统镜像,可能需要先安装缺失的依赖:

sudo apt update sudo apt install bzip2 ca-certificates wget

安装脚本在执行过程中会解压大量文件,bzip2是压缩解压的依赖,少它容易在中途报解压失败的错误。

3. 从下载到环境变量的完整安装链路

3.1 执行安装脚本的正确姿势

确认无误后,进入文件所在目录,执行:

bash Archiconda3-0.2.3-Linux-armv7.sh

这里注意两个细节。第一,用bash而不是sh调用脚本。某些树莓派系统里sh指向的是 dash,和 bash 语法不完全兼容,可能导致脚本执行到一半就报错。第二,不要在命令前加sudo,除非你真的打算给系统所有用户装 Archiconda。普通用户直接安装,后续权限问题会少很多,conda 环境文件写自己的主目录不需要 root 权限,但加 sudo 反而会导致纯 root 创建的文件归属混乱。

安装过程中脚本会进入交互界面:第一步让你回车确认许可协议,按几次回车到协议末尾输入 yes;第二步询问安装位置。默认位置是~/archiconda3。我建议你保持默认,因为这个路径后面很多教程里会直接引用。看到类似installation finished的提示表示安装成功。

3.2 初始化 Shell 环境和基础验证

安装脚本结束前有一个问题:“Do you wish the installer to initialize by running conda init?”,建议输入 yes,这样脚本会自动把你的 shell 初始化好,不需要手动改配置。如果输入 no 也没关系,安装完成后手动执行:

~/archiconda3/bin/conda init bash

然后重开终端或者加载配置:

source ~/.bashrc

这时终端前面会出现(base)前缀,说明 conda 已经接管了当前 shell。接下来做最基础的验证:

conda --version python --version which conda

conda --version能看到版本信息,which conda应该显示~/archiconda3/bin/conda,如果显示的是/usr/bin/conda,说明系统里可能装了别的 conda,需要检查 PATH 变量优先级。

提示:如果你用的是 zsh 或 fish 而不是 bash,conda init bash就不适用了。Archiconda 支持conda init zsh或conda init fish,别搞错。

3.3 安装目录迁移的教训

有个朋友曾经安装时没改默认路径,结果后来系统空间不够,想把整个目录从 TF 卡挪到外接硬盘,直接mv完发现 conda 还能用,但创建虚拟环境时各种路径错乱。这是因为 conda 的配置文件和脚本里还记着旧的 prefix。遇到这种情况,我的建议很简单:不要试图修补路径配置,直接卸载重装,把目标路径从一开始就定好。具体卸载方法就是把安装目录整个删掉,再清理.bashrc里 conda 相关的 init 段,重新执行安装脚本。安装一次大概只要几分钟,路径混乱带来的问题却可能纠缠你好几天,不要因小失大。

4. 更换源这件事,到底改的是什么

4.1 默认源到底慢在哪

装好 Archiconda 后,你以为可以愉快地conda install了,结果执行命令后进度条卡在 0%,路由器灯狂闪,半天才动一点。问题就出在 conda 默认的下载源是国外服务器,从国内访问时速度非常不稳定。pip 也一样,默认从 PyPI 官方源拉包,遇到高峰期或大型依赖时,下载失败率极高。

“更换源”的本质,就是把 conda、pip 的下载地址替换成国内开源镜像站提供的同步地址。这些镜像站内容和上游源保持同步,但服务器在国内,访问速度快很多。它不是修改了包内容,只是换了条更快的路去取。所以实际操作上,就是改配置文件里的 URL,仅此而已。

4.2 Conda 源配置全流程

conda 的配置文件是主目录下的.condarc文件。如果文件不存在就新建一个。配置示例:

cat > ~/.condarc << EOF channels: - conda-forge - 某开源镜像站/anaconda/pkgs/main - 某开源镜像站/anaconda/pkgs/free show_channel_urls: true EOF

这里的conda-forge是 conda 社区维护的一个核心频道,包含大量较新版本的包,保留它很有必要。镜像站的路径需要替换成你实际使用的地址,不同镜像站提供的路径结构略有不同,有些是/anaconda/pkgs/main、/anaconda/pkgs/free,有些还需要额外加cloud/conda-forge/路径。配置前先去镜像站官网看一下帮助文档,别拿一个路径通吃所有镜像。

配置完更新缓存并验证:

conda clean -i conda info

重点看channel urls部分是否只显示你配置的频道,如果里面还出现repo.anaconda.com,说明 default 频道没有清理干净。.condarc里有一种隐蔽写法:配置了 channels 但没显式包含 defaults,conda 仍会默认加载 defaults。这时可以在配置文件的 channels 列表里手动删除 defaults,或者执行:

conda config --remove channels defaults

看到 channel urls 全部变为镜像站地址后,速度提升就很明显了。

注意:有些镜像站因为带宽和合规政策原因不定期调整同步策略,如果某一天你发现conda install报 404,先别急着换配置,去镜像站首页看看服务状态或访问路径是否变更,这是最省时间的排查步骤。

4.3 Pip 源配置与固化

装了 conda 不等于不用 pip。很多包只发布在 PyPI 上,pip install依然频繁使用。pip 的配置文件在~/.pip/pip.conf或~/.config/pip/pip.conf,取决于系统版本。配置内容:

[global] index-url = https://某镜像站/pypi/simple timeout = 60

注意 PyPI 镜像的地址必须以/simple结尾,这是 pip 查找包的固定路径格式。部分镜像站也支持不写/simple,但标准写法更保险。

如果你不想改配置文件,也可以用环境变量临时指定:

export PIP_INDEX_URL=https://某镜像站/pypi/simple

这种方式只对当前终端会话生效,适合临时用一下。长期使用建议还是写在配置文件里,一劳永逸。验证是否生效:

pip config list

输出里能看到 index-url 即为生效。另外,如果项目里还有 poetry、pipenv 这些依赖管理工具,它们读取的源地址通常是独立的配置文件,换源时需要分别处理,别以为 pip 换完就全搞定了。

5. 实测中高频踩坑与排查思路

5.1 安装脚本下载一半失败、校验不通过

这是很多新人遇到的头号问题。直接下载.sh安装包时,网络断流导致文件不完整,运行安装脚本时可能报 arbitrary 的解压错误。此时先不要重复下载,用sha256sum对比一下官方发布的校验值,基本能确认是文件损坏还是网络问题。如果是文件损坏,换个镜像下载或使用断点续传工具下载一次就行。注意下载时文件名会被某些镜像重命名,不要改后缀,否则脚本识别失败。

5.2 conda 报 SSL 相关错误

执行conda install时,有时候会遇到CondaHTTPError: HTTP 000 CONNECTION FAILED,后面跟着一堆 SSL 错误或证书验证失败的日志。官方论坛里给出的临时手段是关闭 ssl 验证:

conda config --set ssl_verify false

我强烈不建议长期开着这个设置,因为证书验证关闭后,下载包的完整性和安全性没有保障。正确做法是先排除根因:执行date看系统时间是否准确。树莓派如果长期未联网,RTC 时间偏差会导致证书验证失败。校准时间用:

sudo apt install ntpdate sudo ntpdate -u pool.org

如果时间没问题,再检查是否设置了CURL_CA_BUNDLE或SSL_CERT_FILE这类环境变量,它们会强制指定证书路径,路径不存在时就会引发错误。解除设置后,SSL 问题通常迎刃而解。

5.3 换完源依然从默认地址拉包

配置完.condarc后执行conda install,看到日志里还是去访问默认源。这种情况十有八九是.condarc里的频道格式写错,或者根本没有生效。先执行conda config --show channels看配置是否被读取,如果显示为空,说明.condarc路径不对。确认路径用:

conda config --show-sources

它会告诉你实际读取的配置文件位置。还有一种情况是你在channels里写了defaults这行字,但没有删除,conda 会把这行和镜像配置同时使用,下载优先级是 defaults 在前,于是实际流量全部走了默认源。检查并清理即可。

5.4 内存不足导致创建环境卡死

树莓派的内存普遍不大,运行时再开几个进程就容易捉襟见肘。conda create -n myenv python=3.8这类命令在解析依赖时非常吃内存,有时直接卡住不动,面板上看到内存占用顶满甚至触发系统 OOM。两个解决办法:一是临时增加 swap 空间,二是使用CONDA_SOLVER切换为更高效的求解器。前者在/etc/dphys-swapfile配置文件里修改CONF_SWAPSIZE,默认值 100MB 可以改为 1024MB 或 2048MB,重启服务生效:

sudo systemctl restart dphys-swapfile

后者在 Archiconda 里装一个带新版求解器的包,再设置环境变量让 conda 调用它,内存占用会明显下降。这个方法实际测试下来对树莓派很友好,创建环境的成功率能提升一个档次。

5.5 常见问题速查表

我把上面这些问题整理成一张表,方便你直接对号入座:

现象可能原因排查与处理思路
安装脚本报 Exec format error下载了错误架构的安装包uname -m 检查架构,重新下载对应包
安装脚本执行到一半报错安装包不完整校验 sha256,换镜像重新下载
conda 命令找不到未初始化 shell 或 PATH 未配置执行 conda init bash,重开终端
创建环境时长时间卡死内存不足或求解器效率低增加 swap;切换现代求解器
conda 下载时出现 404镜像站路径变更或同步异常去镜像站确认路径,更新 .condarc
pip install 超时未配置 pip 镜像源配置 ~/.pip/pip.conf 并验证
Python 版本不满足项目要求Archiconda 默认 Python 3.7 旧用 conda create 创建更高版本环境

6. 安装完之后还能做什么

装好 Archiconda 并换完源之后,树莓派才算真正具备了当作小型开发机的能力。我自己的习惯是立刻为当前项目建一个独立的 conda 环境,比如跑图像识别就建一个带 OpenCV 的环境,做数据分析就建一个带 Pandas 和 Jupyter 的环境,互不干扰,备份和迁移时直接把整个环境目录打包就行。

有一个小技巧:如果后面做比较重的数据任务,建议设置环境变量MAMBA_EXTRACT_THREADS或调整 conda 的并发线程数,树莓派核心数量不多,默认线程设置有时候反而拖慢速度。我试过把并发线程数调低后,大文件解压反而更稳定了,这也算踩坑后的一点心得。

如果你准备用树莓派长期做某种自动化的任务,比如家庭服务器上的数据采集脚本,装好 Archiconda 后还可以配合系统的守护进程管理工具把服务托管起来,进程挂了自动拉起。再结合定时任务,基本就能做到开机运行、故障自愈,完全替代一台小主机的基础工作负载。

最后分享一个我自己的经验:Archiconda 目前针对的 Python 版本比较旧,如果你要跑一些前沿的库,直接装很可能会遇到找不到满足版本要求的包,这时候不必死磕默认环境,用 conda 新建一个高版本 Python 环境再试,大多数问题都能缓解。树莓派折腾的过程本质上就是不断遇到环境错误、查资料、改配置的循环,这篇记录里的坑都是我实际踩过的,希望帮你把这几个小时省下来。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询