1. 为什么选择Miniconda?给Ubuntu 20.04用户的轻量级方案
如果你在Ubuntu上搞过Python开发或者数据分析,大概率听说过Anaconda。它确实是个“全家桶”,开箱即用,啥都有。但说实话,我自己的云服务器就50G硬盘,装个Anaconda,再搞几个项目,空间立马告急。后来我发现了Miniconda,感觉就像从开着一辆满载的卡车,换成了灵活的小轿车。Miniconda本质上就是Anaconda的精简版,它只包含最核心的conda包管理器和Python。其他的库,你需要什么,再通过conda或者pip去安装。这种“按需索取”的方式,对于资源有限的云服务器、或者喜欢保持系统干净的程序员来说,简直是福音。
我猜你点进这篇文章,可能正面临和我当初一样的情况:手头有一台Ubuntu 20.04的机器(可能是本地虚拟机,也可能是云服务器),需要快速搭建一个独立、不干扰系统、又能灵活安装各种科学计算包的Python环境。Miniconda就是为你准备的。它特别适合数据科学家、机器学习工程师,或者任何需要在不同项目间切换Python版本和依赖库的开发者。你可以在一个系统里,同时维护一个用于TensorFlow 2.x的环境、一个用于老项目Pytorch 1.x的环境,甚至还有一个跑着Python 3.6的遗留项目环境,彼此互不干扰。
很多人会纠结conda和pip的区别。简单来说,pip是Python官方的包安装工具,但它只管理Python包。conda则是一个跨平台的语言无关的包管理器,它不仅能安装Python包,还能安装非Python的依赖,比如C库、编译器工具链。举个例子,你想装scipy,用pip安装时,它可能会因为系统缺少fortran编译器而失败。但用conda安装,conda会帮你把scipy和它需要的所有底层库(包括fortran编译器)一起打包好装进来,省心很多。Miniconda给了你使用conda这个强大工具的能力,又没有Anaconda的臃肿身材。
2. 5分钟搞定:Miniconda在Ubuntu 20.04上的极速安装
好了,理论不多说,我们直接上手。整个过程非常快,前提是网络顺畅。我强烈建议使用国内的镜像源来下载安装脚本,速度会快上好几个数量级。清华大学的TUNA镜像站一直很稳定,是我们国内开发者的好伙伴。
首先,我们需要打开Ubuntu 20.04的终端。你可以通过快捷键 Ctrl+Alt+T 快速召唤它。第一步是下载Miniconda的安装脚本。我们不去官网慢悠悠地下,直接瞄准清华源。打开终端,输入下面的命令。这里我选择的是Python 3.8版本的Miniconda,这是一个比较均衡的版本,兼容性好。当然,你也可以在镜像站页面选择其他版本。
wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py38_4.9.2-Linux-x86_64.sh
命令执行后,你会看到一个进度条,很快一个名为 Miniconda3-py38_4.9.2-Linux-x86_64.sh 的文件就下载到你的当前目录了。这个.sh文件就是一个Shell安装脚本。下载完成后,我们需要给它赋予可执行的权限,这就像告诉系统:“这个文件是可以运行的程序。”
chmod +x Miniconda3-py38_4.9.2-Linux-x86_64.sh
权限给好了,现在就可以运行安装脚本了:
./Miniconda3-py38_4.9.2-Linux-x86_64.sh
敲下回车,安装程序就启动了。你会看到一些许可协议的文字,一直按回车往下翻,直到最后它会问你“Do you accept the license terms? [yes|no]”,输入 yes 并按回车。接下来是关键的一步:选择安装路径。安装程序会提示一个默认路径,通常是 /home/你的用户名/miniconda3。我强烈建议你直接按回车使用这个默认路径,这样最省事,后续配置也简单。如果你有特殊需求,想安装到别处,也可以输入自定义路径。
然后安装程序会问:“Do you wish the installer to initialize Miniconda3 by running conda init? [yes|no]”。这里一定要输入 yes! 这个操作会自动帮你把conda命令添加到系统的环境变量里,并且修改你的shell配置文件(比如.bashrc)。这样,你每次打开新的终端,conda的基础环境就会自动激活,可以直接使用conda命令。如果这里选了no,你后续就得手动去配置环境变量,对新手来说比较麻烦。
安装脚本运行完毕后,它会提示你关闭并重新打开终端,或者运行 source ~/.bashrc 来使配置生效。我们就按它说的做,直接关掉当前的终端窗口,再重新打开一个新的。在新的终端里,输入:
conda --version
如果屏幕上显示了conda的版本号(比如 conda 4.9.2),那么恭喜你,Miniconda已经成功安装并配置好了!就这么简单,五分钟不到,你的轻量级Python环境管理神器就到位了。
3. 驯服conda:基础命令与环境管理实战
conda安装好了,但它就像一个功能强大的瑞士军刀,我们得先学会最常用的那几个工具。别被它的众多命令吓到,日常开发中,掌握下面这几个就足以应对90%的场景了。首先,我们得理解conda里“环境”的概念。你可以把每个conda环境想象成一个独立的“房间”。在这个房间里,你可以安装特定版本的Python、特定版本的numpy、pandas等等。不同的房间互不干扰,你在A房间把库升级到最新版,B房间里的老版本依然安然无恙。这完美解决了项目间依赖冲突的世界性难题。
创建新环境是第一步。假设我要开始一个网络爬虫项目,我就可以创建一个名为crawler的环境,并指定使用Python 3.8:
conda create -n crawler python=3.8
运行这个命令后,conda会解析依赖,并列出将要安装的包,问你“Proceed ([y]/n)?”,输入 y 回车,它就会开始创建这个干净的新环境。环境创建好后,你需要“进入”这个房间工作,这就是激活环境:
conda activate crawler
激活后,你会发现终端的命令提示符前面多了个 (crawler),这非常直观地告诉你,你现在正工作在crawler这个环境下。接下来,你在这个终端里用pip install或者conda install安装的任何包,都只会装在这个环境里,不会影响系统或其他环境。
那么怎么安装包呢?以安装爬虫常用的requests和beautifulsoup4为例,你可以用conda:
conda install requests beautifulsoup4
也可以用pip(在conda环境激活的情况下):
pip install requests beautifulsoup4
我个人的习惯是:对于科学计算、数据分析相关的核心包(如numpy, pandas, scikit-learn, tensorflow),优先用conda install,因为conda能更好地处理它们复杂的二进制依赖。对于纯Python包,或者conda仓库里没有的包,再用pip install。不过要注意,尽量在一个环境里统一用一种工具,混用有时可能导致依赖关系混乱。
当你完成工作,想离开这个“房间”回到系统基础环境时,就需要停用环境:
conda deactivate
提示符前面的(crawler)消失,表示你回到了“大厅”(base环境)。那怎么查看我有哪些房间呢?使用这个命令:
conda env list
或者
conda info --envs
它会列出所有conda环境,前面带星号*的就是当前激活的环境。如果某个项目结束了,或者环境被玩坏了,我们可以删除环境:
conda remove -n crawler --all
执行前它会让你确认,输入y即可。这个操作不可逆,但环境本身就是一个可随时重建的容器,所以不用太担心。通过这些基础命令的组合,你就能游刃有余地管理你的多个Python项目世界了。
4. 加速!配置conda与pip的国内镜像源
默认情况下,conda和pip都是从国外的服务器下载包,那个速度,尤其是在下载一些几百兆的科学计算包时,简直是一种煎熬。好在国内有像清华大学、阿里云、豆瓣等机构维护的镜像站,将它们配置为优先源,下载速度能直接起飞。这步配置属于“一次配置,终身受益”的操作,务必完成。
首先来配置conda的镜像源。conda的配置信息存储在 ~/.condarc 这个文件里。我们可以直接通过命令行来修改它。我们需要添加清华的conda镜像。在终端中依次执行以下命令:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
这些命令会为conda添加几个主要的频道(channels)。添加完成后,我们还需要设置搜索时显示频道地址,并设置清华源的优先级最高:
conda config --set show_channel_urls yes
conda config --set channel_priority strict
最后,你可以用这个命令查看一下最终的配置文件,确保一切就绪:
cat ~/.condarc
你应该能看到文件里包含了刚才添加的清华镜像地址,并且 channel_priority 是 strict。这样就完成了conda的加速配置。
接下来是pip的镜像源配置。pip的配置可以针对单个用户,也可以针对单个虚拟环境。我推荐配置全局的(用户级)源,这样所有环境里的pip默认都会用这个快源。方法是在用户家目录下创建或修改一个pip的配置文件。
在终端输入:
mkdir -p ~/.pip
然后,我们用文本编辑器创建或编辑配置文件。这里我用nano编辑器,你也可以用vim:
nano ~/.pip/pip.conf
在打开的文件中,输入以下内容(这里以阿里云镜像为例,速度也非常快):
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host = mirrors.aliyun.com
输入完成后,按 Ctrl+O 保存文件,再按 Ctrl+X 退出nano编辑器。这样,你的pip就配置好了阿里云的镜像源。当然,你也可以把 mirrors.aliyun.com 换成 pypi.tuna.tsinghua.edu.cn(清华源)或者其他你喜欢的国内源。
配置完成后,你可以找个大点的包(比如 numpy)试着安装一下,感受一下速度的提升。你会发现之前可能需要几分钟甚至超时的下载,现在几十秒就搞定了。这个小小的配置,能为你的开发效率带来巨大的提升,绝对值得花这五分钟。
5. 进阶技巧:环境导出、克隆与常用配置
当你熟练使用基础的环境管理后,肯定会遇到一些更实际的需求。比如,你在自己电脑的crawler环境里精心配置好了所有依赖,现在想把一模一样的环境复制到公司的服务器或者分享给同事,怎么办?难道要手动记下所有包名和版本再一个个装?conda早就为你准备好了工具。
最常用的就是导出环境。你可以将一个环境中的所有包及其精确版本号导出到一个YAML文件中。假设我们要导出当前激活的crawler环境:
conda env export > crawler_environment.yaml
这个命令会生成一个名为 crawler_environment.yaml 的文件。用文本编辑器打开它,你会看到里面列出了所有的依赖,包括通过pip安装的包。这个文件就是你的环境“配方”。你可以把它放进项目的版本控制(如Git)里,这样其他开发者就能一键复现你的环境。他只需要拿到这个YAML文件,然后运行:
conda env create -f crawler_environment.yaml
conda就会自动创建一个新环境,并按照文件里的记录安装所有指定版本的包。这对于保证团队开发环境一致性、项目可复现性至关重要。
有时候,你不想完全复制一个环境,只是想基于某个现有环境做点小修改,创建一个类似的。这时候可以用克隆环境。比如,我想基于稳定的crawler环境,创建一个用于实验新库的 crawler_experimental 环境:
conda create -n crawler_experimental --clone crawler
克隆的速度比从头创建并安装所有包要快得多,因为它直接复制了已有的文件。
除了环境管理,conda本身也有一些很实用的配置。比如,清理缓存。conda在安装过程中会下载很多包缓存,时间久了会占用不少磁盘空间。定期清理一下是个好习惯:
conda clean --all
这个命令会清理掉所有未使用的包缓存和临时文件。再比如,你想更新conda自身到最新版本:
conda update -n base -c defaults conda
注意,我们是在base环境里更新conda。还有一个我常用的技巧是搜索包。当你不确定一个包在conda仓库里的确切名字,或者想看看有哪些可用版本时:
conda search tensorflow
这会列出所有频道里可用的tensorflow版本。最后,分享一个提升终端体验的小技巧:为常用的环境激活命令设置别名(alias)。编辑你的 ~/.bashrc 文件:
nano ~/.bashrc
在文件末尾加上几行,比如:
alias go_crawler='conda activate crawler'
alias go_dl='conda activate pytorch_env'
保存退出后,运行 source ~/.bashrc。以后你想激活crawler环境,只需要在终端输入 go_crawler 就行了,非常方便。这些进阶技巧能让你和conda的配合更加得心应手,真正把它变成提升生产力的利器。
6. 避坑指南:我遇到过的典型问题与解决方案
用了这么多年Miniconda,踩过的坑也不少。很多问题其实都有简单的解决办法,我在这里总结几个最常见的,希望能帮你节省大量搜索和排错的时间。
第一个坑:安装后输入conda命令提示“未找到命令”。 这通常是因为安装最后一步,当安装程序问“Do you wish the installer to initialize Miniconda3?”时,你选了no,或者没有重新启动终端/执行source ~/.bashrc。解决方法很简单,手动初始化一下。首先找到你的Miniconda安装路径(如果你用的是默认路径,通常是/home/你的用户名/miniconda3),然后运行其下的初始化脚本:
source /home/你的用户名/miniconda3/bin/activate
conda init bash
执行完后,关闭终端再重新打开,conda命令就应该可用了。如果还不行,检查一下你的~/.bashrc文件末尾,是否自动添加了类似 >>> conda initialize >>> 这样的段落,如果没有,可能就是初始化没成功,可以尝试重新运行安装脚本。
第二个坑:创建环境或安装包时速度奇慢,或者一直卡在“Solving environment”。 这首先检查你是否配置了国内镜像源(参考第4节)。如果配置了还慢,可能是conda在解析复杂的依赖关系时遇到了困难。可以尝试几个方法:1) 使用 -c 参数指定频道,减少搜索范围,如 conda install numpy -c conda-forge。2) 明确指定包的版本,有时不指定版本conda会花大量时间寻找“最优”版本组合。3) 终极方法:如果只是临时安装几个包,可以先用pip安装,虽然可能不如conda完美,但通常更快。
第三个坑:在虚拟环境里,用which python和pip list发现Python和包的位置不对。 这几乎百分之百是因为你没有激活环境,或者激活的环境不对。请务必确认终端提示符前有类似(env_name)的标记。激活环境后,which python应该指向.../miniconda3/envs/env_name/bin/python这个路径。如果路径不对,先用conda deactivate彻底退出,再重新conda activate env_name。
第四个坑:环境损坏,无法安装或更新任何包。 有时候因为网络中断或权限问题,环境可能会处于一种“锁死”状态。可以尝试删除conda的锁文件:
rm -rf /home/你的用户名/miniconda3/pkgs/*.lock
rm -rf /home/你的用户名/miniconda3/envs/你的环境名/*.lock
然后重试操作。如果问题依旧,最干脆的解决办法就是备份一下环境(用conda env export),然后删除这个环境,再根据YAML文件重建一个。conda环境的轻量性使得重建成本并不高。
第五个坑:磁盘空间不足。 Miniconda虽然轻量,但如果你创建了十几个环境,每个环境都装一堆大型科学包,空间也会很快被吃掉。定期使用 conda clean --all 清理缓存。对于不再使用的旧环境,果断 conda remove -n env_name --all。也可以考虑将Miniconda安装到挂载的额外数据盘上,而不是系统盘。养成好习惯,一个项目做完,如果短期内不再用,就把它的环境导出成YAML文件后删除,下次需要时再重建。
465



被折叠的 条评论
为什么被折叠?



