Linux下conda实战:Miniconda安装、换源与环境管理全攻略
2026/9/17 4:29:22 网站建设 项目流程

1. 为什么要用conda,以及它到底解决了什么问题

如果你是刚接触Linux的开发者,或者已经在用Linux但还没试过conda,那这篇文章值得你认真看完。conda全称是Anaconda Distribution里的核心包管理器,但它也可以独立安装为Miniconda,它的核心能力就两条:管理Python软件包管理独立环境

我最早在Linux下用conda,是因为被Python版本和包依赖折磨得够呛。项目A需要Python 3.6 + TensorFlow 1.x,项目B需要Python 3.10 + PyTorch 2.x,如果用系统自带的Python,要么天天改环境变量,要么把所有依赖强行装在一起,装到后期各种库之间互相打架,编译报错能让你排查一下午。conda的出现相当于给每个项目单独开了个“沙盒”,Python版本、库的版本都被隔离得干干净净,想切换项目就切换环境,不污染系统,也不用担心删了某个包把别的项目搞崩。

另外,conda本身跨平台,Linux、macOS、Windows都能用,而且它在Linux下的表现最稳定。无论你用的是Ubuntu、CentOS还是Debian,安装步骤基本一致。这篇文章是我在自己服务器和本地虚拟机上反复试过之后总结出的完整流程,从零开始,每一步都有命令、有解释、有坑点,保证你照着操作能一次跑通。

不管你是做数据分析、机器学习、后端开发,还是就是想给服务器搭一个可复用的Python环境,conda都是非常适合的方案。

2. 安装前的准备工作和Miniconda安装全流程

2.1 先想清楚装Anaconda还是Miniconda

很多新手一上来就搜Anaconda,因为名字好听、教程多。但我个人的建议是:除非你真的需要Anaconda预装的那几百个数据科学包,否则装Miniconda就够了。

Anaconda体积巨大,安装包将近1GB,装完占好几个GB磁盘空间,而且里面大部分包你根本用不到。Miniconda只有80MB左右,只包含conda本身、Python和一个最小化的环境,你需要啥就自己装啥,干净、可控、不浪费资源。对于生产服务器来说,Miniconda更是首选。

如果后面发现自己确实需要完整的科学计算包,也可以在Miniconda里通过创建环境时指定anaconda这个包集合来实现,比如:

conda create -n datascience anaconda

这条命令会装一个包含常用科学计算包的环境,效果和Anaconda基本等同。

2.2 下载Miniconda安装脚本

在安装前,先确认你的Linux是64位还是32位,一般现在都是x86_64架构。用下面命令确认:

uname -m

输出x86_64就选64位版本,如果是aarch64就选ARM版本,这在树莓派或某些ARM服务器上要注意。

然后去Miniconda官网或者清华镜像站下载安装脚本。官网地址是https://repo.anaconda.com/miniconda/,但国内服务器从官网下载速度可能很慢,我一般用清华镜像站,速度快很多:

wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh

注意,如果你在国内服务器上,强烈建议走清华源,后续还要配置conda的软件源,一举两得。下载完可以看一下文件大小是否正常,一般在80MB左右。

2.3 执行安装脚本

下载完成后,先给脚本加执行权限,然后运行:

chmod +x Miniconda3-latest-Linux-x86_64.sh bash Miniconda3-latest-Linux-x86_64.sh

安装过程会有一个交互式向导,注意看每一步的提示:

  • 第一步会显示license协议,连续按几次回车,然后输入yes回车
  • 第二步会提示安装路径,默认是/root/miniconda3(如果是root用户)或者/home/用户名/miniconda3,直接回车使用默认路径即可。如果你想自定义路径,在这个位置输入完整路径
  • 第三步会问是否要初始化conda,在较新版本中会显示Do you wish to update your shell profile to automatically initialize conda?,这里一定要输yes,否则后续还得手动初始化

这里有个容易踩的坑,就是千万别用sudo去执行安装脚本。如果你当前用户就是普通用户,而你又装了sudo前缀,那conda会被装到root的目录下,文件权限全部属于root,你之后装包、建环境会遇到各种权限问题。

2.4 验证安装是否成功

安装完成后,需要重新加载一下shell配置,或者干脆退出终端重新登录,让conda命令生效:

source ~/.bashrc

然后运行:

conda --version

如果能看到类似conda 24.x.x的输出,就说明安装成功了。这时候命令行提示符前面可能会出现(base)字样,说明conda的默认环境base已经自动激活了。如果你不想每次打开终端都自动激活base环境,可以执行:

conda config --set auto_activate_base false

这个看个人习惯,我一般会关掉,因为base环境我用的频率并不高,每次进项目前手动激活对应环境更清晰,也能避免在base里乱装东西。

3. 初始化、换源与基础配置,装完必须做的三件事

3.1 处理solve environment慢和conda init报错问题

这里我先讲讲一个热词里出现的高频报错:CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'. To initialize your shell, run: $ conda init

这个报错的意思是conda环境变量没有正确加载,shell还不知道conda的存在。原因通常是安装的时候没有选择初始化,或者你用的shell不是bash而是zsh、fish。

解决办法很简单,按提示执行:

conda init

这条命令会自动检测你当前使用的shell,并写入相应的配置文件(比如~/.bashrc~/.zshrc)。执行完再source ~/.bashrc或者重开终端就行了。

如果你用的是zsh,建议在~/.zshrc里确认一下是否生成了conda初始化相关的代码块。稳妥的做法是执行conda init zsh

3.2 配置清华源,让conda下载包的速度起飞

国内服务器用conda装包,最大的痛点就是默认官方源不稳定,速度时快时慢,运气不好还直接断连。解决方案就是换成清华镜像源。

利用conda config命令添加源:

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 --set show_channel_urls yes

这里我用的是清华镜像站的标准源地址,覆盖了conda的mainfree以及conda-forge频道。conda-forge是社区维护的最大软件源,很多包官方源里没有或者版本旧,这里都能找到,所以建议加上。

添加完之后,可以查看一下配置:

conda config --show channels

能看到三个源并且顺序是刚加的那些就说明配置生效了。conda优先从排在最上面的源下载。

这里我要特别强调一下,conda换源后首次执行下载可能会出现缓存索引的告警提示,这是正常的,不用管。如果出现某个源访问报错(如404或连接超时),可以换个镜像站,比如上海交大源、阿里源。但就我实测来看,清华源是综合速度和稳定性的首选。

再补充一个pip的换源,因为用conda装不了的少数包还是要靠pip,而pip默认的PyPI源在国内也很慢。执行:

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

这样后续用pip装包也能享受加速,实测下载速度能提升多倍。

3.3 给conda配置包含Python版本的环境参数

配置完成后,先验证一下conda的完整状态:

conda info

这条命令会显示conda版本、Python版本、环境路径、源地址等详细信息。重点看channel URLs那几行,确认是不是已经变成了清华镜像地址。

如果一切正常,建议先升级一下conda本身到最新版:

conda update -n base conda

注意,这里要指定-n base,因为base环境是conda的自留地。升级完成后会提示是否继续,输入y即可。升级的原因是旧版本conda在解析依赖时算法较慢,新版本(4.10以上,尤其是23.x之后)解决依赖的速度明显提升。

4. conda核心操作实战:创建环境、激活环境、安装包、删除环境

4.1 创建新环境:这一点是整个conda的核心用法

conda最强大的功能就是环境隔离。创建一个新环境的命令格式是:

conda create -n 环境名称 python=版本号 [其他包名]

比如我们要创建一个名为labels的Python 3.9环境(这个规格在目标检测项目中很常用,因为很多老模型依赖3.9):

conda create -n labels python=3.9

执行后conda会进行依赖解析,显示要安装的包列表,输入y确认。下载和安装过程会用到刚配置好的清华源,正常情况下几分钟就能完成。

如果要创建环境的同时安装常用包,可以这样:

conda create -n ml python=3.10 numpy pandas matplotlib

这条命令会创建ml环境,并同时装好numpy、pandas、matplotlib,省得后面对着一堆包名逐个装。

4.2 激活和退出环境:切换环境的核心操作

创建好环境后,必须激活才能使用,这就是很多新手容易栽到那里的地方,记着:

conda activate labels

激活成功后,命令行的提示符前面会出现(labels)字样,表示当前处于labels环境中。这时候你执行python -V,看到的就是这个环境里的Python版本,而不是系统的。

退出环境用:

conda deactivate

这个命令会回到base环境,如果在base里直接执行则返回到系统Python。

注意:如果你在安装时选了初始化,但conda activate仍然报错,十有八九是shell配置文件里conda初始化代码被覆盖或删除了,回到3.1节重新conda init一下即可。

4.3 安装包、卸载包、查看包列表

在已经激活的环境中,用conda install来装包:

conda install numpy

也可以不激活环境,直接指定环境名安装:

conda install -n labels numpy

安装指定版本的包:

conda install numpy=1.24.3

这种包名=版本号的写法是标准格式,注意别写成Python语法里的双等号。

卸载包:

conda remove numpy

查看当前环境已有的包列表:

conda list

如果要查看特定环境下的包:

conda list -n labels

4.4 删除环境和克隆环境

删除一个环境时要小心,这个操作不可逆,会把整个环境目录连同里面所有包都删除:

conda remove -n labels --all

删除前建议先确认一下环境名,千万别把base环境删了。如果误删了其他环境,没有后悔药。

克隆环境的场景是我平时经常用到的,比如我在base里调好了所有常用工具包,给新项目时不想重新一个个装,就可以:

conda create -n newproject --clone labels

这个命令会完整复制一份labels环境,包括里面所有的包和配置。克隆后两个环境互不影响,新建的环境改动不会影响原环境。这个功能在快速搭建多个项目环境时非常好用。

4.5 导出和导入环境配置,实现环境迁移

把当前环境的包列表导出成文件:

conda env export > environment.yml

这个environment.yml文件记录了当前环境的所有包名和版本号,可以提交到Git仓库,别人拿到后可以快速复现同样的环境:

conda env create -f environment.yml

这里有个小技巧,如果只是想在别的机器上装相同名字的包,不要求完全一致的版本,可以用更轻量的方式:

conda list --explicit > spec-list.txt conda create -n myenv --file spec-list.txt

两种方式各有适用场景,团队协作复现环境时我一般用第一种,因为可读性强、依赖更精确。

5. 实战场景:用conda快速搭建Python 3.11和PyTorch环境

5.1 通过清华源安装Python 3.11

前面热词里提到了“使用清华源conda install python=3.11”,这块很多人搞不清楚怎么配合使用。其实过程很简单,关键在于创建环境时用你配置好的清华源就行,并不需要额外加什么参数,因为conda会默认使用你已经配好的source

先创建环境并指定Python版本:

conda create -n py311 python=3.11

这里python=3.11这个参数会让conda去所有配置的频道中查找Python 3.11的最新版本。由于我们已经配置了清华镜像源,下载过程会很顺利。

安装完成后激活环境,验证一下:

conda activate py311 python -V

看到Python 3.11.x就成功了。

值得注意的是,有些旧版本的conda对Python 3.11的支持不完整,可能出现找不到包的情况。所以安装前先确认conda版本不要太旧,我用的是conda 23.10.0(随Miniconda最新版安装),一切正常。

5.2 安装PyTorch:用镜像源解决下载慢的问题

安装深度学习框架PyTorch时,最常见的痛点就是模型库和CUDA依赖包太大,官方源下载慢。如果走conda官方源,几个GB的文件可能要下半小时甚至超时。

用清华源之后,整个过程会大幅提速。以安装CPU版本PyTorch为例:

conda install pytorch torchvision torchaudio cpuonly -c pytorch

这里的-c pytorch指定了从PyTorch官方频道下载。但有个问题,这个命令会默认先查官方源,速度可能很慢。我们之前已经配置了清华的conda-forge源,但PyTorch的官方频道还没加。加一下:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/

配置好后再执行安装命令,这样PyTorch相关包会优先从清华镜像下载。

如果你用GPU版本的PyTorch,建议去PyTorch官网用它的配置工具生成命令,官网上会根据操作系统和CUDA版本生成对应的安装命令,选好Linux + conda形式即可。

5.3 在PyCharm中配置conda环境

装了conda以后,Windows用户或者图形界面用户经常会遇到PyCharm不认识conda环境的问题。这里我说一下正确配置方式。

打开PyCharm,进入File -> Settings -> Project -> Python Interpreter,点击Add Interpreter(添加解释器),选择Conda Environment

此时PyCharm会要求你填一个路径,关键点来了:不需要填到具体的python执行文件,而是直接填到conda安装目录。如果PyCharm自动检测不到,手动选择路径。

用命令行启动PyCharm时要特别注意环境变量,因为此时PyCharm继承你终端的PATH,所以建议在终端里先conda activate py311再打开PyCharm,这样PyCharm能识别对应的conda环境。

6. 常见问题排查与避坑指南

6.1conda不是内部或外部命令的解决办法

这个提示说明conda没有添加到环境变量里,也就是PATH没有配置。检查一下~/.bashrc文件,看末尾有没有类似:

export PATH="/root/miniconda3/bin:$PATH"

如果没有,手动加进去,保存后执行source ~/.bashrc

在非交互式shell里(比如cron定时任务),也要确保加载了conda路径,否则同样会报这个错。

6.2 无法安装某些包或者下载速度很慢

先确认源是否配置成功:

conda config --show channels

如果只有defaults,说明没生效。重新执行3.2节的命令添加源。

如果下载时卡在Solving environment很久,几十秒甚至几分钟都没反应,这多半是conda依赖解析慢,解决方法是升级conda版本:

conda update -n base conda

新版本conda使用了更高效的求解器,速度提升明显。

6.3 安装某个包提示版本冲突,怎么破

版本冲突是conda使用中非常常见的问题,比如A包要求numpy小于2.0,B包要求numpy大于1.24,conda找不到一个同时满足两个条件的版本,就会报UnsatisfiableError

解决办法:

  1. 优先尝试conda install 包名==版本号明确指定版本,缩小搜索空间
  2. 使用conda search 包名查看可用的版本列表
  3. 如果确实需要两个有冲突的包,可以考虑用两个环境分别装,然后通过本地文件传递数据,很多时候没必要强行共存
  4. 换用conda-forge频道往往有惊喜,这个频道的包维护更活跃

我最近一次装深度学习相关的包组合时,就是靠conda install -c conda-forge解决了一个官方源没法解决的依赖冲突,这个通道的兼容性在此类场景中很管用。

6.4 conda环境太多导致磁盘空间不足

每个conda环境都是独立的一份Python解释器和包,所以占用空间不小。装多了之后,磁盘会越来越紧张。

查看所有环境及其路径:

conda env list

找到不需要的环境,果断删除:

conda remove -n oldenv --all

另外conda会缓存所有下载过的安装包,清一下:

conda clean --all

这条命令会清理索引缓存和下载缓存,释放几百MB空间是常有的事。

6.5conda activate无效或者提示初始化错误

这个之前说过,就是conda和shell的联动没做好。执行conda init解决。如果已经执行过conda init还是有问题,检查一下当前shell是不是bash,echo $SHELL看一下输出。

如果是zsh但之前初始化写的是bash,就会错位。重新执行:

conda init zsh source ~/.zshrc

6.6bad interpreter或权限不足问题

如果你在安装过程中使用了sudo,或者后来不小心用root对该目录进行了操作,可能会出现Permission denied错误。这是因为普通用户没有权限读写miniconda目录。

解决办法,给你的账号赋权:

sudo chown -R 用户名:用户名 /home/用户名/miniconda3

用户名替换成你自己的登录用户名,注意路径要和实际一致。改完权限后,再执行conda命令就正常了。

6.7 conda和pip都需要装包,怎么避免混乱

混合使用conda和pip装包会导致一个环境内有两套包管理记录,偶尔会出现同一模块两边都装了但版本不一致的情况。

我的经验是:约定一个优先级规则。核心科学计算包、深度学习框架首选conda安装,因为conda会处理好依赖和二进制包的兼容性。conda里找不到的,或者最新版只能通过pip装的,才用pip。

需要特别注意的是,尽量不要在同一环境里反复交替使用conda和pip装同一个包,这会覆盖之前的安装记录,可能导致环境状态不一致甚至损坏。

7. 使用conda真正常用的一组命令速查表

我平时用得最多的命令其实就那些,整理成表格方便大家查阅:

操作命令
创建环境conda create -n 名字 python=版本号
克隆环境conda create -n 新名字 --clone 旧名字
激活环境conda activate 名字
退出环境conda deactivate
删除环境conda remove -n 名字 --all
查看环境列表conda env list
查看环境中已装包conda list
安装包conda install 包名
安装指定版本包conda install 包名=版本号
卸载包conda remove 包名
搜索包conda search 包名
导出环境配置conda env export > environment.yml
导入环境配置conda env create -f environment.yml
更新condaconda update -n base conda
清理缓存conda clean --all
查看配置conda config --show

这些命令覆盖了日常使用中90%以上的需求,没必要把所有命令都背下来,用的时候回来查表就行。

8. 经验总结:我的一套conda最佳实践

文章写到这里,基础的流程基本讲完了。最后再简单分享一下我个人在长期使用中沉淀下来的一套工作方式,不一定适合所有人,但值得参考。

第一点,为每个项目单独建环境,不要共用环境。哪怕是两个机器学习项目都用到PyTorch,如果依赖版本有差异,还是分别建环境更省心。建环境成本很低,时间也就几分钟,但解决冲突的时间往往更多。

第二点,环境名要起得有规律。比如我会用项目名_py版本这样的格式,label_detection_py39web_backend_py311,一眼就知道这个环境是什么项目用的、什么Python版本。如果只用myenvtest这种名字,过一两个星期你就不记得它是干嘛的了。

第三点,配置好源之后少折腾。清华源配好之后基本不用动,不要频繁切换各种源。我见过有些人为了某个包反复换源,最后把自己环境搞乱了。遇到特定包下载慢,优先考虑换conda-forge这样的频道,而不是整体把源改掉。

第四点,先把conda版本升级到最新的再装大型框架。每次装PyTorch或TensorFlow这种大型框架包之前,我一般会先conda update -n base conda一下,确保解析依赖的算法是最新版本,这样那些动辄需要解析几百个依赖的安装流程能快很多。

第五点,用conda管理环境、用requirements.txt管理Python层面的依赖版本,两者配合。conda负责二进制层面的兼容性,requirements.txt记录项目的Python包依赖,这样不管是conda还是pip的用户都能方便地复现你的环境。这个习惯在做开源项目协作时尤其重要。

最后,再回答一个经常被问的问题:conda和virtualenv到底怎么选?如果只用Python,virtualenv完全够用;但一旦涉及到非Python的依赖、CUDA环境、C库,conda的表现就远超virtualenv了。所以我长期使用的原则是:纯Python项目随意,涉及原生库和深度学习框架统一用conda——这是经过一次次踩坑验证出来的结论。

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

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

立即咨询