一、Conda简介与安装
说实话,我第一次接触Conda的时候,还觉得它就是个普通的包管理器。直到在一个深度学习项目中,我折腾了三天才配好CUDA、cuDNN和PyTorch的组合,结果换台机器又全崩了。那时候我才意识到,环境管理这件事,真不是装个pip就能解决的。
简单来说,Conda是一个跨平台的包管理器和环境管理器。它能做的事情很直接:装软件包、管依赖、隔离环境。但关键在于——这三件事它做得特别稳。你想想看,在一个项目中用了Python 3.8,另一个项目需要Python 3.11,没有环境隔离的话,这根本没法共存。
1.1 Conda能帮你解决什么问题
我遇到过好多同行,最开始用pip裸装,结果项目一多,依赖冲突让人崩溃。Conda的核心价值其实就是三个字:可复现。你的环境长什么样,别人一拉就能重建一模一样的环境。
- 环境隔离:每个项目独立,互不干扰
- 跨平台支持:Windows、macOS、Linux,一套配置到处跑
- 二进制包管理:不用从源码编译,省时间也省心
- 依赖自动解决:Conda的求解器比pip强不少,遇到冲突会明确告诉你
1.2 安装Conda——不同平台的操作指南
安装Conda其实不复杂,但平台不同,细节有点差异。我个人建议新手直接装Miniconda,没必要上来就把Anaconda全家桶拉下来,几百个包用不到几个,还占空间。
Windows平台
# 1. 下载Miniconda安装包
# 去 https://docs.conda.io/en/latest/miniconda.html
# 选 Windows 64-bit 版本
# 2. 双击安装,按提示走
# 注意:勾选 "Add Miniconda3 to my PATH environment variable"
# 再勾选 "Register Miniconda3 as my default Python"
# 3. 安装完成后,打开 Anaconda Prompt 或 PowerShell
conda --version
macOS平台
# 推荐用命令行安装(Intel和Apple Silicon版本不一样)
# Intel Mac
curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
# Apple Silicon (M1/M2/M3)
curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh
# 运行安装脚本
bash Miniconda3-latest-MacOSX-*.sh
# 按提示操作:阅读协议 -> yes,选择安装路径 -> 默认就好
# 安装完重启终端,或者执行:
source ~/.zshrc
Linux平台
# Ubuntu/Debian/CentOS 通用
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
# 运行安装
bash Miniconda3-latest-Linux-x86_64.sh
# 安装过程中会问你是否初始化conda,建议选 yes
# 然后重新加载配置
source ~/.bashrc
conda update conda,把Conda本身更新到最新。老版本Conda的依赖求解器确实慢,新版本快了不少。
1.3 验证安装与配置基础
装完之后得确认一下功能正常。别笑,我真见过有人装完了没验证,过了两天才发现PATH没配置对。
# 查看版本
conda --version
# 更新conda
conda update conda
# 查看帮助
conda --help
# 查看配置信息
conda info
conda info的输出很重要,它会告诉你当前环境路径、默认的Python版本、channel源等关键信息。我每次配新机器都会看一眼,确认一下。
1.4 Conda vs. pip vs. virtualenv——一个简单的对比
经常有人问我:有了pip和virtualenv,为什么还要用Conda?我通常用一个比喻来解释:pip是超市,virtualenv是给你一个空购物车,Conda是配好全套方案的便利盒。说白了,Conda能一次性解决非Python依赖的问题——比如HDF5、OpenSSL、CUDA这些。
| 特性 | Conda | pip + virtualenv |
|---|---|---|
| 语言范围 | 多语言(Python/R/C++等) | 仅Python |
| 依赖求解 | SAT求解器,精确可靠 | 线性依赖,容易冲突 |
| 二进制包 | 预编译,无需编译器 | 部分需要编译 |
| 环境隔离 | 原生支持 | 通过virtualenv/venv |
| 非Python包 | 支持(如HDF5、CUDA) | 不支持 |
1.5 初始化与基础操作示例
安装完Conda之后,还有一个新手很容易忽略的步骤:初始化shell。这样conda命令才能在终端里直接生效。
# 初始化conda到你的shell(bash/zsh/fish都行)
conda init
# 如果你用的是zsh(macOS默认)
conda init zsh
# 重启shell后,你会看到前面多了个 (base)
# 这就表示conda环境已经激活了
# 测试一下
conda list
conda list会显示当前base环境中已经安装的所有包。如果你装的是Miniconda,列表会非常短——只有必要的几个核心包。这才是你想要的状态。干干净净。
我个人习惯,装完第一时间把默认的channel配置搞好。不改的话,下载速度在部分地区会比较慢。
# 添加国内镜像源,速度能快很多
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 --set show_channel_urls yes