Conda 是一个开源的包管理系统和环境管理系统,支持 Python、R 等多种语言。相比 pip + venv,Conda 的优势在于:
- 跨语言:不仅管 Python 包,还能管 C 库、R 包等
- 二进制分发:预编译好的包,无需本地编译工具链
- 环境隔离:每个环境有独立的 Python 解释器和包集合
1. 安装 Conda
选择版本
推荐安装 Miniconda(精简版)而非 Anaconda(完整版 3GB+),只装最核心的 conda + Python,需要什么包再自己装。
安装步骤
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
bash Miniconda3-latest-MacOSX-*.sh
|
安装完成后重新打开终端,如果命令行前面出现 (base) 即表示成功。
验证安装
如果不想默认激活 base 环境
conda config --set auto_activate_base false
|
2. Conda 常用命令速查
查看帮助
conda --help conda <子命令> --help
|
更新 Conda 自身
conda update conda conda update --all
|
3. 环境管理(核心功能)
创建新环境
conda create -n myenv python=3.11
conda create -n myenv python=3.11 numpy pandas matplotlib
conda create -p /path/to/env python=3.11
|
参数说明:
-n 或 --name:环境名称
-p 或 --prefix:环境路径
-c:指定频道,如 -c conda-forge
激活与退出环境
conda activate myenv
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:
conda create -n py311 python=3.11
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 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 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 已加载:
conda init zsh
source ~/.zshrc
|
加速下载(国内用户)
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. 日常工作流示例
conda create -n myproject python=3.11
conda activate myproject
conda install numpy pandas matplotlib jupyter conda install -c conda-forge scikit-learn
python -c "import numpy; print(numpy.__version__)" python --version
conda deactivate
|
9. 卸载 Conda
rm -rf ~/miniconda3
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 |