Conda 常用命令

本文档列出在日常使用 Conda(Anaconda / Miniconda)时常见且实用的命令与示例,包含环境管理、包管理、导出/导入、配置与清理等常用操作。


环境管理(创建 / 激活 / 删除 / 列表)

  • 创建新环境:指定 Python 版本
1
conda create -n myenv python=3.10
  • 创建并同时安装包
1
conda create -n myenv python=3.10 numpy pandas
  • 列出所有环境
1
2
3
conda env list
# 或者
conda info --envs
  • 激活环境
1
conda activate myenv
  • 停用当前环境
1
conda deactivate
  • 删除环境
1
conda remove -n myenv --all
  • 克隆环境
1
conda create --name cloned_env --clone myenv

包管理(安装 / 升级 / 卸载 / 列表)

  • 在当前激活环境安装包
1
conda install numpy
  • 在指定环境安装包
1
conda install -n myenv scipy
  • 从特定 channel 安装(如 conda-forge)
1
conda install -c conda-forge opencv
  • 使用 mamba(更快的替代品):先安装 mamba,然后用 mamba 替代 conda
1
2
conda install -n base -c conda-forge mamba
mamba install -n myenv -c conda-forge somepkg
  • 升级包
1
2
3
conda update numpy
# 或升级 conda 本身
conda update -n base -c defaults conda
  • 卸载包
1
conda remove package_name
  • 列出环境中的包
1
conda list

导出 / 导入 环境(共享、重现)

  • 导出当前环境为 YAML(常用于分享)
1
conda env export > environment.yml

建议去掉 build 信息以提高可移植性:

1
conda env export --no-builds > environment.yml
  • 从 YAML 文件创建环境
1
conda env create -f environment.yml
  • 使用 explicit 列表导出(精确包二进制 URL)
1
2
conda list --explicit > spec-file.txt
conda create --name myenv --file spec-file.txt

环境与包调试、信息查看

  • 查看 conda 信息(配置、路径、active env)
1
conda info
  • 搜索包
1
conda search pandas
  • 查找包来自哪个 channel
1
conda search numpy --info

配置与 channel 管理

  • 添加 channel(优先级低 -> 高)
1
conda config --add channels conda-forge
  • 设置 channel 优先级(strict / flexible):
1
conda config --set channel_priority strict
  • 查看当前配置
1
conda config --show
  • 临时使用 channel 安装(推荐用于测试):
1
conda install -c conda-forge somepkg

清理与维护

  • 清理未使用的包、缓存(回收磁盘空间):
1
conda clean -a

常用选项: -p(清理包缓存),-t(清理 tarballs),-i(清理索引缓存),-a(全部)。

常见技巧与注意事项

  • 禁止自动激活 base 环境(启动时更干净)
1
conda config --set auto_activate_base false
  • 在不激活环境下运行命令
1
conda run -n myenv python script.py
  • 在项目中使用 environment.yml 保持可重复环境:将 environment.yml 加入仓库,使用 conda env create -f environment.yml 重建。
  • pip 与 conda 混用注意:优先使用 conda 安装包(尤其是依赖 C 库的包),必要时在 conda 环境中使用 pip install,并在 environment.yml 中把 pip 依赖放在 - pip: 下列出。

示例 environment.yml(带 pip 依赖):

1
2
3
4
5
6
7
8
9
name: myenv
channels:
- conda-forge
dependencies:
- python=3.10
- numpy
- pip
- pip:
- some-pypi-package==1.2.3

conda install vs pip install

对比项 conda install pip install
包来源 默认从 Anaconda 官方仓库(defaults)或指定 channel(如 conda-forge)获取,经测试编译并打包包含二进制依赖 直接从 PyPI 下载源码或 Wheel(通常不含系统级依赖)
依赖解析 Conda 使用 SAT 求解器全局解析所有依赖,尽量给出互相兼容的包版本;可能速度较慢 pip 采用递归解析,遇到冲突只发出警告,最终环境可能出现不兼容版本
非 Python 依赖 可以同时安装 C/C++ 库、MKL、CUDA 等系统依赖,因为包里已经包含编译好的二进制 只能处理 Python 包;若需要系统库需自行安装(或依赖 OS 包管理器)
环境作用域 可以指定 -n env_name 操作任意 Conda 环境;也可全局管理环境(conda create/remove 仅对当前激活的 Python 环境生效(如 venv、virtualenv、conda 环境)
构建方式 包在构建时统一使用 Conda build,保证 ABI 兼容;安装时通常无需编译 遇到只发布源码的包时会现场编译,需本地编译链(build tools
适合场景 数据科学、需要加速库或系统依赖的项目,或希望全部由一个工具管理环境与包 纯 Python Web/脚本项目,或需要最新的 PyPI 包(PyPI 更新通常快于 Conda)

组合使用建议

  1. 先用 conda install 安装能在 channel 找到的包,确保二进制依赖完备。
  2. Channel 中没有的包再用 pip install,并在 environment.yml- pip: 块记录版本。
  3. 同一环境内尽量避免频繁交替安装(尤其是多 channel + pip),以减少依赖冲突。

使用anaconda管理员身份打开prompt,激活相应的虚拟环境后再pip,这样就只会安装到其相应的虚环境中了

常见问题快速解答

  • conda 安装失败或依赖冲突:尝试使用 mamba,或创建新的干净环境并逐步安装;也可尝试指定 channel 或使用 --no-update-deps(谨慎)。
  • 环境太多想批量删除:用 conda env list 找到名称,再用脚本循环删除。