ARM-Linux-Ubuntu平台Miniconda安装与配置全攻略 📅 发布时间:2026/8/26 4:25:15 👁 浏览次数: 1. 项目缘起为什么要在ARM-Linux-Ubuntu上折腾Miniconda最近在搞一个基于树莓派CM4的嵌入式AI项目板子跑的是Ubuntu 22.04 LTS架构是aarch64。项目需要用到PyTorch、OpenCV这些库不同库之间对Python版本、依赖项的要求简直是“神仙打架”。用系统自带的pip安装不是版本冲突就是编译失败尤其是在ARM平台上很多预编译的wheel包根本没有从源码编译一次OpenCV能让你怀疑人生。这时候一个隔离的、能管理复杂依赖的环境就成了刚需而Conda或者说它的精简版Miniconda无疑是这个领域的王者。但问题来了官方提供的安装脚本默认是针对x86_64架构的。当你兴冲冲地在ARM板子的终端里运行bash Miniconda3-latest-Linux-x86_64.sh时迎接你的只会是一行冰冷的“cannot execute binary file: Exec format error”。这个错误提示直白地告诉你兄弟你这二进制文件架构不对跑不起来。所以在ARM-Linux-Ubuntu平台上安装Miniconda核心不是“安装”而是“找到并安装正确的版本”。这个过程本身不复杂但其中关于架构识别、环境配置的细节以及后续使用中ARM平台特有的“坑”才是真正有价值的地方。这篇文章我就结合自己多次在Jetson、树莓派、甚至国产ARM服务器上部署环境的经验把这条看似简单实则暗藏玄机的路给你彻底趟平。2. 核心准备认清你的平台与获取正确的安装包在动手之前搞清楚两个关键信息是避免一切无用功的前提你的操作系统位数和处理器架构。2.1 确定系统架构打开终端执行这条命令uname -m对于绝大多数现代的ARM开发板如树莓派3/4/5、Jetson系列、基于Cortex-A72/A76等的服务器输出通常是aarch64。这代表64位的ARM架构。如果是更老的一些板子比如树莓派Zero W可能会输出armv7l代表32位ARM架构。另一个更详细的命令是arch这个命令的输出会更直接比如就是aarch64。注意aarch64和arm64在Linux语境下通常指的是同一回事都是64位ARM架构。Miniconda的官方下载链接中使用的是Linux-aarch64。2.2 获取ARM架构的Miniconda安装包官方仓库贴心地提供了ARM架构的版本。绝对不要去下载那些写着x86_64的链接。访问Miniconda官网打开 https://docs.conda.io/en/latest/miniconda.html 。这个页面会列出所有版本。找到Linux安装器在页面中找到 “Linux installers” 部分。选择正确的版本你需要寻找明确标有Linux-aarch64的链接。例如Miniconda3-py311_24.3.0-0-Linux-aarch64.sh(这是一个具体版本示例版本号会随时间更新)这个Linux-aarch64就是我们要的。如果你的是32位ARM (armv7l)可能需要寻找社区维护的版本因为官方似乎不再提供新的armv7l安装器。对于aarch64官方支持是完备的。使用wget或curl下载在Ubuntu终端中直接使用wget命令下载是最快的方式。将下方链接替换为你在官网找到的最新Linux-aarch64链接。wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh如果系统没有wget可以用curl -O URL替代。实操心得我习惯直接使用Miniconda3-latest-Linux-aarch64.sh这个“latest”链接它会自动指向该架构最新的稳定版。这样可以避免手动查找和更新版本号的麻烦。当然如果你需要锁定某个特定的Python基础版本那就需要去下载带有具体版本号的文件。3. 安装流程详解从脚本到可用的Conda环境拿到正确的安装包后安装过程本身是标准化的。但每一步背后的选项和后续的配置才是决定环境是否“好用”的关键。3.1 运行安装脚本首先赋予下载的脚本可执行权限然后运行它。chmod x Miniconda3-latest-Linux-aarch64.sh bash Miniconda3-latest-Linux-aarch64.sh运行后安装程序会启动。以下是几个关键交互步骤的解读欢迎与许可协议按Enter键滚动阅读许可协议直到最后输入yes同意。安装位置确认这是第一个重要选择。安装程序会显示一个默认路径通常是/home/你的用户名/miniconda3。直接回车会安装到这个默认的用户目录下。这是最推荐的方式不需要sudo权限所有文件归当前用户所有避免了后续权限混乱的问题。Conda环境本身是用户级的工具这样安装最干净。输入自定义路径比如/opt/miniconda3。如果你打算让系统多个用户使用同一个Conda基础安装实际不推荐可以选这个但安装时需要sudo权限并且要手动管理后续的文件权限。初始化Conda安装最后安装程序会问Do you wish the installer to initialize Miniconda3 by running conda init? [yes|no]这里强烈建议输入yes。如果选yes安装脚本会自动修改你的 shell 配置文件如~/.bashrc将conda命令所在路径加入PATH并设置好conda activate所需的shell钩子。完成后你需要重新打开一个终端窗口或者执行source ~/.bashrc来使配置生效。之后你就能在任何目录下直接使用conda命令了并且会发现命令行提示符前多了个(base)这表示你正处于Conda的base基础环境中。如果选no安装程序不会修改任何配置文件。你需要手动将Conda的bin目录例如/home/username/miniconda3/bin添加到你的PATH环境变量中并且conda activate命令可能无法直接使用。这对于想要完全手动控制的高级用户可能是个选项但对绝大多数人来说都是自找麻烦。3.2 验证安装与理解“conda init”安装并重新打开终端后你应该能看到提示符类似这样(base) userhost:~$。运行以下命令验证conda --version这会输出Conda的版本号例如conda 24.3.0。此时conda、python、pip等命令都已经可用。这里要深刻理解一下conda init做了什么。它不仅仅是添加了一个路径更重要的是在~/.bashrc文件末尾添加了一段脚本这段脚本的作用是启用Conda的“shell交互模式”。当你启动终端时这段脚本会运行它使得conda activate和conda deactivate命令能够改变当前shell会话的环境变量主要是PATH从而实现环境的切换。如果没有初始化你可能会遇到 “CommandNotFoundError: Your shell has not been properly configured to use ‘conda activate‘.” 这样的错误。踩坑记录曾经有一次我在一个Dockerfile里安装Miniconda为了保持镜像精简我选择了conda init no。结果在后续的RUN指令中我不得不写成绝对路径/opt/conda/bin/conda install package并且无法创建激活其他环境流程变得非常别扭。后来才明白在交互式使用的场景下conda init yes是必需品。4. ARM平台特有的使用技巧与避坑指南安装成功只是第一步在ARM平台上用好Conda还需要注意以下几点。4.1 通道管理与包安装策略Conda的包来自于“通道”。默认通道defaults由Anaconda公司维护。对于ARM平台特别是aarch64社区通道conda-forge至关重要。conda-forge是什么一个社区驱动的软件包仓库包数量更多更新更及时。更重要的是它对非x86架构如aarch64, ppc64le的支持通常比官方defaults通道更好、更全面。如何添加并优先使用conda config --add channels conda-forge conda config --set channel_priority strict--set channel_priority strict这个设置会强制Conda在解决依赖关系时优先从更高优先级的通道如conda-forge中寻找包这能极大提高在ARM上找到合适包的成功率并减少依赖冲突。搜索与安装当你需要安装一个包时比如scipy可以先用conda search scipy查看哪些通道、哪些版本可用于你的平台linux-aarch64。你会看到很多包后面会标注conda-forge。4.2 处理“无预编译包”的情况尽管conda-forge覆盖很广但ARM平台上依然有一些小众或最新的库没有预编译的conda包。这时你有两个选择使用pip在Conda环境内Conda环境完美兼容pip。首先用Conda安装尽可能多的依赖特别是那些包含本地C/C扩展、编译复杂的包如numpy、pandas然后用pip安装剩下的。conda activate my_env conda install numpy pandas # 用conda安装这些能确保获得针对ARM优化过的二进制包 pip install some_pure_python_package # 用pip安装纯Python包或conda没有的包注意尽量避免pip install一个已经被conda安装的包的核心依赖这可能导致环境混乱。顺序是“conda优先pip补缺”。从源码编译这是最后的手段。如果conda和pip都没有你就得从源码编译。这通常意味着你需要确保环境中安装了编译工具链和库头文件。在Ubuntu上你可能需要sudo apt-get update sudo apt-get install build-essential cmake pkg-config # 以及一些特定的开发库例如对于Python包 conda install compilers libtool automake然后按照包的README进行编译安装。这个过程在ARM上可能耗时很长比如编译TensorFlow。4.3 环境管理与实践建议不要总是在base环境里安装包Base环境是Conda的根环境把它弄脏了会影响所有其他环境。好的习惯是为每个项目创建独立的虚拟环境。conda create -n project_env python3.9 conda activate project_env # 现在在这个环境里安装项目所需的所有包导出与复现环境为了在另一台机器可能也是ARM上复现你的环境可以导出环境配置文件conda activate project_env conda env export environment.yml这个environment.yml文件包含了所有包的精确版本和通道信息。在目标机器上安装好Miniconda后用以下命令创建一模一样的环境conda env create -f environment.yml空间管理Conda环境可能会占用不少磁盘空间尤其是安装了科学计算包之后。定期清理缓存可以释放空间conda clean --all4.4 可能遇到的典型错误与解决conda: command not found原因conda init未执行或未生效。解决确保安装了正确的架构版本并在安装时对“初始化”选择了yes。如果选了no需要手动将Miniconda的bin目录添加到PATH并手动初始化。对于bash可以尝试echo export PATH/home/username/miniconda3/bin:$PATH ~/.bashrc source ~/.bashrc。但更建议重新运行安装脚本或手动执行~/miniconda3/bin/conda init bash。PackagesNotFoundError: The following packages are not available from current channels:原因当前配置的通道里没有该平台的预编译包。解决首先运行conda config --add channels conda-forge并设置严格优先级。用conda search package_name确认是否有linux-aarch64的包。考虑降低版本要求或者用pip安装。在 https://anaconda.org/search 网站上搜索包查看有哪些通道提供了aarch64版本。环境激活失败提示Your shell has not been properly configured...原因Shell配置未加载。conda init修改的是~/.bashrc但如果你是在脚本中、或者在某个未读取此配置的shell子进程中尝试激活就会失败。解决在脚本中你可以通过直接sourceConda的初始化脚本来激活环境。# 在脚本中 source /home/username/miniconda3/etc/profile.d/conda.sh conda activate project_env这是将Conda环境集成到自动化部署脚本中的标准做法。5. 进阶应用在ARM服务器上搭建多用户Conda环境如果你是在一台ARM架构的服务器比如华为鲲鹏、AWS Graviton实例上为团队配置公共环境安装步骤类似但需要考虑权限和共享。使用sudo安装到公共目录以管理员身份将Miniconda安装到一个所有用户都能访问的路径例如/opt/miniconda3。sudo bash Miniconda3-latest-Linux-aarch64.sh -b -p /opt/miniconda3-b表示批量模式自动同意许可-p指定安装路径。修改目录权限让所有用户至少拥有读取和执行权限。sudo chmod -R 755 /opt/miniconda3 # 如果需要所有用户都能创建自己的环境可能需要设置合适的组权限更复杂的权限管理可以用 setfacl。为用户配置Shell每个用户需要在自己的~/.bashrc中初始化这个公共的Conda。可以让他们添加source /opt/miniconda3/etc/profile.d/conda.sh这样所有用户都能使用同一个Conda基础安装但他们创建的虚拟环境默认在~/.conda/envs/下是各自独立的互不干扰。公共的、稳定的基础环境如包含特定版本CUDA的PyTorch环境可以由管理员创建在/opt/miniconda3/envs/下并设置好权限供大家使用。6. 性能考量与替代方案评估在ARM设备上使用Conda尤其是资源受限的设备如树莓派需要关注性能。磁盘空间与IOConda环境会复制大量文件创建多个环境会快速消耗SD卡或eMMC存储。建议使用高速存储介质并定期清理。conda clean --all和conda remove --name old_env --all是你的好朋友。内存与编译在ARM上从源码编译大型包如SciPy、TensorFlow是内存和CPU密集型操作可能导致编译失败尤其是内存不足。优先寻找预编译的conda包或pip wheel包。替代方案思考Docker/Podman对于追求绝对环境隔离和跨架构部署容器是更强大的选择。你可以拉取为linux/arm64构建的Python镜像在里面用pip管理包。但这对于单个开发板上的日常Python开发来说可能有些“杀鸡用牛刀”并且需要一定的容器知识。纯venvpipPython自带的venv模块更轻量结合pip也能创建虚拟环境。但在管理包含复杂C库依赖的科学计算栈时pip在ARM平台上的体验远不如Conda。你需要自己解决所有系统级依赖通过apt编译失败是家常便饭。综合来看在ARM-Linux-Ubuntu上进行Python数据科学或AI开发Miniconda仍然是平衡了易用性、包管理能力和跨架构支持的最佳选择。它帮你屏蔽了底层架构的复杂性让你能更专注于代码本身。只要走对了下载和初始化的第一步后面的路就和在x86电脑上一样平坦。