MacOS 上 Conda 安装与使用指南

Conda 是一个开源的包管理系统和环境管理系统,支持 Python、R 等多种语言。相比 pip + venv,Conda 的优势在于:

  • 跨语言:不仅管 Python 包,还能管 C 库、R 包等
  • 二进制分发:预编译好的包,无需本地编译工具链
  • 环境隔离:每个环境有独立的 Python 解释器和包集合

1. 安装 Conda

选择版本

推荐安装 Miniconda(精简版)而非 Anaconda(完整版 3GB+),只装最核心的 conda + Python,需要什么包再自己装。

安装步骤

# 下载 Miniconda (Apple Silicon / Intel 根据你的机器选)
# Apple Silicon (M1/M2/M3/M4):
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh

# Intel Mac:
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh

# 运行安装脚本
bash Miniconda3-latest-MacOSX-*.sh

# 按照提示:
# 1. 按 Enter 浏览协议,输入 yes 接受
# 2. 确认安装路径(默认 ~/miniconda3)
# 3. 是否初始化 conda(建议 yes,会自动修改 ~/.zshrc)

安装完成后重新打开终端,如果命令行前面出现 (base) 即表示成功。

conda --version

验证安装

conda info

如果不想默认激活 base 环境

conda config --set auto_activate_base false

2. Conda 常用命令速查

查看帮助

conda --help
conda <子命令> --help # 例如 conda install --help

更新 Conda 自身

conda update conda
conda update --all # 更新当前环境所有包

3. 环境管理(核心功能)

创建新环境

# 创建名为 myenv 的环境,指定 Python 版本
conda create -n myenv python=3.11

# 创建环境时同时安装多个包
conda create -n myenv python=3.11 numpy pandas matplotlib

# 指定环境路径(不放在默认 envs 目录)
conda create -p /path/to/env python=3.11

参数说明:

  • -n--name:环境名称
  • -p--prefix:环境路径
  • -c:指定频道,如 -c conda-forge

激活与退出环境

# 激活环境
conda activate myenv

# 退出当前环境,回到 base
conda deactivate

激活后终端提示符变为 (myenv) $,之后的 Python 和包操作都在该环境内。

查看环境列表

conda env list
# 或
conda info --envs

当前环境前会有 * 标记。

复制环境

conda create -n newenv --clone oldenv

删除环境

conda remove -n myenv --all
conda env remove -n myenv # 同上

4. 在环境中安装 Python

Conda 环境可以不指定 Python 版本创建,但这会使用 base 环境的 Python:

# 创建环境时指定 Python(推荐)
conda create -n py311 python=3.11

# 创建后再安装 Python
conda activate myenv
conda install python=3.11

为什么需要指定? 不同项目对 Python 版本要求不同,Conda 可以在不同环境中维护不同 Python 版本。

5. 包管理

安装包

# 安装单个包
conda install numpy

# 安装多个包
conda install numpy pandas matplotlib

# 指定版本
conda install numpy=1.24

# 从 conda-forge 频道安装
conda install -c conda-forge opencv

# 安装到指定环境(不激活也能装)
conda install -n myenv numpy

conda-forge 频道

conda-forge 是社区维护的频道,包比默认频道更全、更新更快。建议添加为默认频道:

conda config --add channels conda-forge
conda config --set channel_priority strict

查看已安装的包

conda list
conda list -n myenv # 查看指定环境

更新包

conda update numpy
conda update --all # 更新当前环境所有包

删除包

conda remove numpy
conda remove -n myenv numpy # 删除指定环境的包

搜索包

conda search numpy
conda search numpy=1.24 # 搜索特定版本

当 conda 没有这个包时

有些 PyPI-only 的包用 pip 安装:

# 先激活环境
conda activate myenv

# 用 pip 安装
pip install some-package

建议:先用 conda install,找不到再用 pip install。混用时尽量先装完所有 conda 包再装 pip 包,避免依赖冲突。

6. 导出与重建环境

导出环境配置

# 导出当前环境的包列表
conda env export > environment.yml

# 只导出显式安装的包(不含依赖)
conda env export --from-history > environment.yml

从配置重建环境

conda env create -f environment.yml

environment.yml 是 Conda 项目最常见的分发方式,放到 Git 仓库中就可以让别人一键重建环境。

7. MacOS 注意事项

Apple Silicon (M1/M2/M3/M4)

Miniconda 安装时会自动选择 arm64 架构,Python 包也默认是 arm64 版本。如果需要运行 x86_64 的包,可以创建 x86 环境:

CONDA_SUBDIR=osx-64 conda create -n py311-x86 python=3.11
conda activate py311-x86
conda config --env --set subdir osx-64

Rosetta 2

如果你需要运行一些尚未适配 ARM 的旧软件,确保已安装 Rosetta 2:

softwareupdate --install-rosetta

Shell 配置

Conda 初始化会在 ~/.zshrc 中添加一段代码。如果终端不显示 (base),确认 .zshrc 已加载:

# 手动初始化(如果安装时选了 no)
conda init zsh
# 重新加载配置
source ~/.zshrc

加速下载(国内用户)

# 添加国内镜像(以清华 tuna 为例)
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

8. 日常工作流示例

# 1. 创建新项目环境
conda create -n myproject python=3.11

# 2. 激活
conda activate myproject

# 3. 安装常用包
conda install numpy pandas matplotlib jupyter
conda install -c conda-forge scikit-learn

# 4. 确认安装成功
python -c "import numpy; print(numpy.__version__)"
python --version

# 5. 开始编码...

# 6. 完成后退出环境
conda deactivate

9. 卸载 Conda

# 删除整个 miniconda3 目录
rm -rf ~/miniconda3

# 清理 ~/.zshrc 中的 conda 初始化代码
# 编辑 ~/.zshrc,删除 conda 相关的几行

# 删除 conda 配置文件
rm -rf ~/.condarc ~/.conda

10. 速查表

操作 命令
创建环境 conda create -n env python=3.11
激活环境 conda activate env
退出环境 conda deactivate
列出环境 conda env list
删除环境 conda env remove -n env
安装包 conda install numpy
查看包 conda list
更新包 conda update numpy
删除包 conda remove numpy
导出环境 conda env export > environment.yml
重建环境 conda env create -f environment.yml
搜索包 conda search numpy