☰
Ubuntu安装Miniforge:替代Miniconda的Python环境管理指南
2026/10/7 4:49:11 网站建设 项目流程

在Ubuntu上配Python环境,Conda是绕不开的话题。很多人图省事直接装Anaconda,稍讲究一点的会用Miniconda,但这两年越来越多做数据分析、跑深度学习、搞科研的朋友,集体换成了Miniforge。既然你点进这个标题,那直接说结论:Miniforge是一个社区维护的Conda发行版,默认就把包源指向conda-forge频道,体积比Anaconda小得多,而且没有Anaconda商业使用条款那些条条框框的限制。它解决的核心痛点就是三个字:可控性。你装完之后拥有完全干净的Python环境,想用什么频道、装什么包、开不开mamba加速,全是你自己说了算。

这个发行版特别适合四类人:一是要在服务器或者Docker容器里跑自动化任务的人,二是被Anaconda授权条款折腾过的企业用户,三是刚入门Python想避开学环境坑的新手,四是想自己掌控环境版本却不爱跟默认源较劲的老手。下面我把Ubuntu上从零安装Miniforge到日常使用的完整流程拆开讲透,所有步骤都是我自己踩过坑之后验证过的,直接照着做就行。

1. 为什么我用Miniforge替代Miniconda

先别急着装,花两分钟搞清楚它和Miniconda的区别,安装时才不会一脸懵。Miniforge和Miniconda本质上是同一个项目的两条分支:它们都是极简安装器,只带conda、Python和少量基础包,安装体积都在几百MB。最大的分叉在默认频道上:Miniconda默认走Anaconda公司的官方channel,而Miniforge默认走conda-forge这个由社区志愿者维护的频道。

1.1 它与Miniconda到底差在哪里

我用一个表格把几个关键差异列出来,对比最直观:

对比项MiniforgeMinicondaAnaconda
默认软件源conda-forgeAnaconda官方默认源Anaconda官方默认源
许可证BSD 3-ClauseAnaconda Terms of Service商业使用需付费
包管理器conda + mambacondaconda + navigator
预装包仅基础运行时仅基础运行时内置150+常用包
安装体积300MB左右400MB左右3GB+
社区定位社区驱动、中立商业公司驱动面向企业交付

这里真正影响日常使用的其实是两点。第一,频道策略。conda-forge的更新和构建是开放透明的,很多新库在官方频道还没同步,conda-forge上已经出了轮子,尤其是最新版PyTorch、TensorFlow这类生态联动频繁的库,conda-forge往往能更快跟上。第二,许可证风险。Anaconda在2020年调整了商业使用条款,超过一定规模的企业用户需要购买授权,虽然日常个人用不受影响,但如果你的代码要部署到公司服务器,或者要给客户交付,直接用Anaconda的默认配置是存在合规隐患的。Miniforge完全避开这个问题,BSD许可证非常宽松,随便拿去做二次分发都没事。

1.2 conda-forge通道为什么值得托付

很多人对社区维护的东西有顾虑,担心不稳定、没有售后。这里说句公道话,conda-forge恰恰是目前最稳定、最开放的Conda包源之一。它像一个自动化流水线,每个包的构建脚本都是公开的,任何开发者都可以提交新的配方,一旦通过审查,自动构建和测试就会生成跨平台的包文件。

我自己的体会是,conda-forge的包更新速度经常比官方源还快。比如某个Python库今天发了0.9版本,conda-forge可能两三天内就有对应的包,而官方源可能要等到下个月打包周期。另外conda-forge对平台的支持也做得细,x86_64、arm64的Linux、macOS、Windows全照顾到,特别是Apple Silicon这种新架构,conda-forge的适配一直是走在前面的。总体来说,Miniforge选它做默认源,等于替你选了一个最省心的社区伙伴。

2. Ubuntu上安装Miniforge前的环境准备

装之前先把准备工作做扎实,避免装到一半因为缺依赖或者架构选错而返工。Ubuntu安装Miniforge不需要太高的门槛,但有几项前置确认值得花30秒做一遍。

2.1 确认系统架构和网络环境

第一步是确认你的Ubuntu到底是amd64还是arm64,这直接决定了你下载哪个安装脚本。比如你在AWS买的ARM服务器,或者手里是一台搭载Apple Silicon芯片的机器跑虚拟机,架构选错的话包根本装不上。

uname -m

我这台测试机上输出的是x86_64。如果你看到的是aarch64,就要去下载带aarch64标记的安装包。查看当前系统的Ubuntu版本也顺手做掉,虽然Miniforge对版本要求不太严格,但知道环境总没坏处:

lsb_release -a

能跑Ubuntu 20.04或22.04以上的版本,基本都没问题。接下来确认curl或者wget有没有装。Ubuntu桌面版通常自带curl,但服务器极简版可能没有。执行一下,没有就装:

which curl || sudo apt install curl -y

另外提醒一句,Miniforge的安装脚本要从GitHub Release或者官网下载,如果你是在国内机房或者网络受限的内网环境,建议先准备好镜像源或者代理,不然下载那几百MB会非常痛苦。这里不展开讲代理配置,但后面如果遇到CondaHTTPError,基本就是网络问题,到时候可以回看第5章的排查思路。

2.2 下载并校验Miniforge安装脚本

确认好架构之后,去Miniforge的GitHub Release页面找对应版本的安装脚本。如果你想在命令行直接操作,我用的指令是这种套路:

wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh

如果你是aarch64架构,就把文件名换成Miniforge3-Linux-aarch64.sh。下载完成之后不要急着执行,先校验一下文件的完整性,这一步特别重要,尤其是从网络上下载的东西,防一手文件损坏或者被篡改。官方在每个Release页面都会发布对应的SHA256校验值,用下面的命令做校验:

sha256sum Miniforge3-Linux-x86_64.sh

把输出结果跟官方页面上的SHA256值对比,如果完全一致就说明文件没问题。我自己因为跳过这个步骤被坑过一次:局域网里下载脚本时传输损坏,直接运行结果诡异报错,后来重新下载并校验才对上。这种坑排查起来很浪费时间,校验一下只要几秒,不要省。

3. Ubuntu上安装Miniforge的完整步骤

准备就绪后进入正式安装。Miniforge的安装流程和大多数Conda发行版一致,本质上就是一个带交互界面的Shell脚本,整个过程大概两三分钟。

3.1 执行安装脚本与交互式选项

先给脚本加上执行权限,然后运行它:

chmod +x Miniforge3-Linux-x86_64.sh ./Miniforge3-Linux-x86_64.sh

脚本跑起来之后会先显示许可证信息,常见操作是直接按回车翻阅,然后输入yes接受。接下来它会问你安装到哪个目录,默认是$HOME/miniforge3。我建议保持默认,因为很多教程和配置都会默认这个路径,如果你改了路径,后面的.bashrc配置也要跟着改,容易出岔子。如果你希望全系统共享,可以安装到/opt/miniforge3,但那样需要sudo权限,目录归属也比较麻烦,个人使用或者单机开发环境用默认路径最稳。

还有个提示要留意:脚本会问你要不要运行conda init。这一步会让安装器自动往你的~/.bashrc里写入conda初始化代码,务必选择yes。如果选no,你安装完之后还得手动去初始化,麻烦不说还容易漏。

3.2 初始化Shell并验证安装

安装脚本执行完后,重新打开终端或者手动source一下配置文件,让conda命令直接生效:

source ~/.bashrc

接着验证安装是否成功。我习惯先看版本信息和当前环境:

conda --version conda info

如果输出里有conda版本号,以及各个路径信息,就说明核心服务正常。再顺手看下当前默认的channels配置,预期的输出应该包含conda-forge:

conda config --show channels

有时候新装完不会立刻显示conda-forge,别慌,可能是你还没初始化默认配置。Miniforge的安装脚本本身已经写好了默认channel配置,正常执行完上面这步就能看到。看到conda-forge就放心了。

检查完基础配置,强烈建议做一次全量更新,把conda本体、mamba这些基础工具都刷新到最新版:

conda update -n base -c conda-forge conda mamba

这一步能避免很多后续安装时的版本兼容性问题,等于给整个包管理打了个底。

3.3 配置conda-forge频道与基础优化

虽然Miniforge已经默认了conda-forge,但有几项优化建议在安装后马上做,能让后面用起来更顺手。

首先是设置channel priority为strict。这个动作的含义是让conda在解析依赖时坚持优先从排名靠前的频道中选包,而不是在不同频道间互相混搭。混搭的后果通常是包A从conda-forge装,它的依赖包B却从其他频道拉,最后整个环境出现依赖碎裂。执行:

conda config --set channel_priority strict

然后是把自动激活base环境的开关关掉。如果不关,每次打开终端都会自动进入base环境,对于不常用Conda的终端窗口来说会污染系统Python环境。我习惯设置成false,需要哪个环境自己激活:

conda config --set auto_activate_base false

再配一个自动更新通道索引的行为。当conda找不到包时,它会自动更新本地包索引,但有时候这个行为会让安装过程变慢。追求速度的话可以设置成false,然后手动用conda update --all来同步。不过新手阶段还是建议保持true,免得遇到包找不到时一头雾水。

到这里,Miniforge在Ubuntu上的安装和基础配置就算全部完成了。接下来进入最硬核的日常实操环节。

4. 环境创建与日常包管理实操

Conda的核心价值在于环境隔离。装了Miniforge之后,你能轻松创建多个互不干扰的Python环境,比如一个环境跑TensorFlow 2.x,另一个环境跑PyTorch实验,完全不需要互相迁就版本。

4.1 创建、激活和管理虚拟环境

创建环境的标准姿势是这样的:

conda create -n ml_lab python=3.11 pip -y

这条命令的含义是创建一个名叫ml_lab的独立环境,指定Python版本为3.11,同时在里面装好pip。-y参数的意思是跳过确认,直接执行。这里有个小建议:创建环境的时候一定要把python版本显式固定下来,不要偷懒省掉。因为不同的项目对Python版本的要求很敏感,清华源或者conda-forge上很多老包只支持到3.8、3.9,如果你随手建一个默认最新版环境,后面装包会遇到各种兼容性爆炸。

环境创建完之后,激活它:

conda activate ml_lab

这时你的终端提示符前面会出现一个(ml_lab)前缀,说明你现在已经在这个环境中操作了。查看当前环境里的Python解释器路径,确认环境隔离没有出问题:

which python

输出路径应该是/miniforge3/envs/ml_lab/bin/python这样的。如果你发现指向了/usr/bin/python,那说明conda没有被正确激活,赶紧检查一下初始化配置。

平时管理环境最常用的几个命令我都列出来,直接背住就行:

conda env list # 查看所有环境 conda remove -n 环境名 --all # 删除环境 conda deactivate # 退出当前环境 conda list # 列出当前环境已安装的包

4.2 用mamba和conda快速安装包

Miniforge的一大杀手锏是内置mamba。mamba是Conda的C++重写版,用并行下载和更快的依赖解析算法,把conda install的速度提升了不止一个量级。日常装包我首推mamba,尤其当环境里要装几十个包的时候,速度差距非常明显。

安装科学计算全家桶的示范命令:

mamba install numpy pandas scikit-learn matplotlib jupyterlab -y

这一条命令会从conda-forge拉取所有相关包并进行依赖解析。mamba解析依赖的速度非常快,可能几秒内就告诉你解决方案,而传统conda在这个环节经常会卡几十秒甚至几分钟。用起来唯一的区别是命令前缀从conda换成mamba,其他语法完全一样。

不过也不是所有包都适合用conda装。灵活性最高的还是pip。conda和pip混用是日常,但要记住一条核心规则:同一个环境里先用conda/mamba装能装的包,装不上的再辗转pip。原因是conda对包有依赖追踪,pip装的东西conda完全无视,两个工具管理同一个环境时如果顺序搞反,很容易产生依赖冲突。装大型科学计算包时切记:先conda,后pip;如果已经用pip装了一堆东西,再想用conda补装同类型的包,大概率要炸。

下面是我个人比较推荐的混用顺序:

  1. 先mamba装核心计算类包,如numpy、pandas、scipy;
  2. 再装框架类包,如pytorch、tensorflow,这些库在conda-forge上有官方构建,直接mamba装,别用pip;
  3. 最后装纯Python工具包,这类没有C扩展依赖的,用pip更省事。

4.3 环境导出、迁移与项目复现

环境管理做到位,项目复现就轻松多了。当你打算在另一台机器或者Docker容器里复现实验环境时,直接把当前环境导出成文件:

conda env export -n ml_lab > environment.yml

生成的environment.yml会把当前环境的所有包、版本号、来源频道完整记录。到了新机器上,一条命令即可重建:

conda env create -f environment.yml

这里有个坑要提醒:导出的yml文件经常包含环境路径和构建信息,这种通用性会差一点。如果要跨平台迁移,建议用--from-history参数,只保留你明确指定过的包名和版本,让新环境重新解析依赖:

conda env export --from-history -n ml_lab > environment.yml

这个做法更规范,特别是团队协作的时候,别人拿到这个文件在完全不同的系统上也能顺利重建。我自己交付项目给客户时都习惯用from-history的版本,很少出问题。

5. 常见问题与故障排查实录

Miniforge在Ubuntu上的使用过程中,总会有那么几个让人血压飙升的瞬间。我把这几年实际遇到的高频问题和排查思路整理成速查手册,方便你遇到问题随手翻。

5.1 网络与下载慢、CondaHTTPError

这是最最常见的报错。你用conda装包的时候突然蹦出来一堆CondaHTTPError、ConnectionError,或者下载速度只有几KB/s,绝大多数是网络到conda-forge服务器的链路有问题。

排查路径按顺序走:

conda clean -i # 清掉索引缓存 conda update --all # 强制刷新

如果还是不行,就检查当前配置的channel源:

conda config --show channels

确认没有残留Anaconda官方默认源混在里面。如果你配置了镜像源,需要确定镜像源本身是活的。我遇到过几次镜像没同步把包删了的情况,最后只能切回官方源。在Ubuntu服务器上跑任务,强烈的建议是给conda挂一层可靠的网络路线,不然每次拉包都像抽奖。挂代理这个操作本身不难,但要注意环境变量的设定。

5.2 包冲突与依赖解析失败

conda的依赖解析虽然自动化程度高,但偶尔会告诉你“无法找到可用的包组合”或者“冲突的依赖关系”。这时候不要无脑加--force,大部分情况下是版本锁死导致的。

最有效的解法是新建一个干净环境,把要装的包版本放宽:

conda create -n fresh_env python=3.10 mamba install numpy pandas scikit-learn

如果你确实要保留现有环境,试试把包版本改成比较宽松的约束,比如把numpy=1.24改成numpy>=1.20,<2.0,让依赖解析器有更多腾挪空间。再有就是注意channel priority。前面设置的strict优先级会强制包只能来自特定频道,你要是同时用了多个频道,容易互相找不到对应的依赖版本,这时候把优先级降回flexible试试:

conda config --set channel_priority flexible

我个人经验里,90%的冲突问题,新建环境都比手动解决依赖要快,所以别在一条道上走到黑。

5.3 环境损坏、conda无法启动

Ubuntu系统升级或者手动操作失误,可能导致conda本身都起不来了。典型症状是执行conda命令直接报module或segmentation fault错误。这个不要慌,两个方案。

第一个是轻量修复,重置基础环境的东西:

conda update -n base conda

如果base环境已经损伤到无法运行conda,就直接进入安装目录手动更新conda:

cd ~/miniforge3 ./bin/conda update -n base conda

第二个方案是终极方案,备份好你的environment.yml,把整个miniforge3目录重装一遍。这听上去麻烦,但只要你的环境管理习惯好,随时可以一条命令恢复所有环境。所以我一直强调用environment.yml做日常备份,真的能在这种时候救命。目录权限问题也要注意,安装时如果没改过路径,默认就是用户级别权限。如果你用sudo跑某个安装操作,导致miniforge3目录下的文件所有者变成了root,那conda也会怪异地报权限类错误,这时候需要把所有者改回来:

sudo chown -R 你的用户名 ~/miniforge3

6. 几点实操心得与建议

Miniforge用了三年多,我最大的体会是:一个好的工具链能显著降低你在环境管理上的心智负担。以前用Anaconda的时候,每次创建环境都提心吊胆,生怕某个包把另一个包搞崩,换成Miniforge配合mamba之后,这个顾虑基本消失了,甚至可以很自信地进行多版本Python和多个框架的并行实验。

几条实操心得送给你,都是我实际踩坑总结出来的:

  • 不要在base环境里安装业务包。base环境保持精简,只用它维护conda和mamba本身。业务包一律放到独立环境里,这样base环境永远干净,出问题时也不用担心核心工具链被污染。
  • 每次都把Python版本钉死在创建环境时写清楚。偷懒用默认版本,等包冲突的时候再回头补救,工程量翻倍。
  • 优先使用mamba,少用conda install。不是conda不能用,而是速度差距实在太大,用了mamba就回不去了,特别是依赖复杂的环境,mamba能在几十秒内给出解析方案,代码体验不可同日而语。
  • 每天开工前如果遇到装包卡顿,先清一遍缓存再更新,conda clean -a在磁盘空间紧张或者缓存异常时特别有效。

至于扩展玩法,Miniforge和Docker的搭配我非常推荐。官方已经有miniforge的docker镜像,基于ubuntu基础镜像,里面预装好了Miniforge,你可以在这个镜像上构建自己的应用环境,写一个Dockerfile做一套完整可复现的部署方案,比手动apt装Python再配环境稳定得多。

FROM condaforge/miniforge3 COPY environment.yml /tmp/environment.yml RUN mamba env create -f /tmp/environment.yml RUN echo "conda activate myenv" >> ~/.bashrc

用过一次就会明白,把环境配置作为代码管理起来,再也不会出现“在我机器上明明能跑”这种尴尬局面。如果这篇文章对你有帮助,现在就可以下载安装脚本动手试了。你的第一个环境,就从mamba create -n test python=3.11 -y开始吧。

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

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

立即咨询