Conda 开发 Python 程序完全指南

23 阅读8分钟

一、介绍

Conda 是一个跨平台的包管理与环境管理系统,常用于 Python 开发。它通过虚拟环境机制,在单台机器上创建多个独立环境,每个环境包含特定版本的包及其依赖链,从根本上解决依赖版本冲突问题。

本指南从零开始,覆盖安装、环境管理、包管理、IDE 集成到项目协同的全流程。

一、安装 Conda

1.1 选择发行版本

Conda 有三种主流分发方式:

版本说明适用场景
Miniconda仅包含 Conda + Python 解释器,轻量纯净开发初期,按需安装包
Anaconda预装 150+ 科学计算包(numpy、pandas 等)数据科学、机器学习入门
Miniforgeconda-forge 社区版,完全开源免费生产环境首选(避开 Anaconda ToS 限制)

生产环境优先选择 Miniforge,默认使用 conda-forge 渠道,可避免 Anaconda 商业使用条款的合规风险

1.2 安装步骤

  1. 下载安装包:前往 Anaconda 官网 或 Miniforge 仓库 下载对应操作系统的安装程序。

  2. 执行安装:Windows 运行 .exe 安装向导;macOS/Linux 运行 Shell 脚本。安装全程选择默认选项即可。

  3. 初始化 Shell:安装完成后,让安装程序自动初始化 Shell,或手动执行:

    • Windows (PowerShell): conda init powershell
    • Linux/macOS: conda init bash
  4. 重启终端:关闭并重新打开终端使配置生效。

  5. 验证安装

    bash

    conda --version
    

    text

    conda 25.x.x
    

1.3 首次配置

为避免意外污染 base 环境,建议关闭 base 自动激活

bash

conda config --set auto_activate_base false

此后每次打开终端将进入系统 Python 环境,仅在需要时手动 conda activate 切换。

二、核心概念:虚拟环境

虚拟环境是一个独立目录,包含特定版本的 Python 解释器和独立的包安装路径。激活后,python 和 pip 命令指向该环境,安装和运行完全与其他环境隔离

Conda 的虚拟环境比 Python 自带的 venv 更彻底:它不仅隔离 Python 包,还隔离非 Python 依赖(如 C/C++ 库),因此在科学计算和机器学习领域尤为常用

为每个项目创建独立的环境是最佳实践

三、环境管理:核心命令

所有环境默认存储在 ~/anaconda3/envs/(或 ~/miniconda3/envs/)目录下。

3.1 创建环境

bash

# 创建指定 Python 版本的环境
conda create -n myenv python=3.12

# 创建时同时安装初始包
conda create -n data_env python=3.11 numpy pandas=2.1.0 scipy

# 静默创建(跳过确认提示)
conda create -n myenv python=3.12 -y

环境名称应简洁有描述性,如 django_projectml_workshop,避免随意命名。

3.2 激活与退出环境

bash

# 激活环境(终端提示符变为 (myenv) $)
conda activate myenv

# 退出当前环境,返回 base 或系统环境
conda deactivate

Conda 4.6 版本之后统一使用 conda activate,无需区分操作系统

3.3 查看环境

bash

# 列出所有环境(带 * 的为当前激活的环境)
conda env list
conda info --envs          # 同上

3.4 删除环境

bash

conda remove -n myenv --all

删除前建议先 conda deactivate 退出该环境。删除操作不可逆,确认不再需要后再执行

四、包管理

4.1 Conda 包管理与 Channel 机制

Conda 通过 Channel(通道)机制管理软件源

通道名称说明
defaults官方维护的基础包
conda-forge社区维护的扩展包集合,更新更快、包更全
bioconda生物信息学专用包

推荐使用 conda-forge,包更新更及时,版本覆盖更全面

4.2 安装包

bash

# 基本安装
conda install numpy

# 指定版本
conda install numpy=1.24.0

# 指定通道
conda install -c conda-forge pytorch

# 同时安装多个包
conda install numpy pandas matplotlib scikit-learn

# 在当前环境中静默安装
conda install numpy -y

重要提示:创建环境时一次性安装所需的包,避免逐个安装。逐个安装可能导致依赖冲突,Conda 的依赖解析器在处理一次性安装时效果最佳

4.3 包管理常用命令

操作命令
查看已安装的包conda list
搜索可用包版本conda search pandas
更新指定包conda update numpy
更新所有包conda update --all
卸载包conda remove numpy
更新 Conda 自身conda update conda

4.4 Conda 与 pip 的配合使用

Conda 和 pip 可以协同使用,但需遵循核心原则:

优先 Conda,再用 pip。

先用 Conda 安装科学计算核心包(numpy、pandas、pytorch 等),然后对于 Conda 仓库未收录的纯 Python 包,再用 pip 补充安装

使用 pip 时务必确保已激活正确的 Conda 环境,避免安装到 base 或其他环境中

4.5 解决依赖冲突

当遇到 UnsatisfiableError 时,可尝试以下方法

  1. 优先使用 conda-forge 渠道conda install -c conda-forge opencv

  2. 使用 mamba 加速解析:mamba 与 Conda 命令兼容,依赖解析速度更快。

    bash

    conda install -n base mamba -c conda-forge
    mamba install pytorch torchvision -c pytorch
    
  3. 使用 --freeze-installed 选项:避免升级现有包。

五、项目协同与依赖管理

5.1 导出环境配置

将当前环境的完整配置导出为 environment.yml,便于团队协作和跨机器复现

bash

# 激活目标环境后导出完整配置
conda activate myenv
conda env export > environment.yml

# 导出精简版(仅含包名和版本,不含构建信息,跨平台更友好)
conda env export --no-builds > environment_slim.yml

# 仅导出显式安装过的包(不含依赖链,更精简)
conda env export --from-history > environment-min.yml

environment.yml 可同时包含 Conda 和 pip 依赖,pip 依赖会写在 YAML 的 pip: 小节中

5.2 从 YAML 文件重建环境

bash

# 创建新环境(环境名取自 YAML 文件的 name 字段)
conda env create -f environment.yml

# 指定环境名覆盖 YAML 中的 name
conda env create -f environment.yml -n new_name

# 更新已有环境(--prune 删除不在 YAML 中的包)
conda env update -f environment.yml --prune

将 environment.yml 纳入版本控制(Git),新成员克隆项目后一条命令即可还原完整开发环境。

5.3 跨平台环境复制

跨机器同步环境有三种方案

方案命令示例适用场景
精确版本清单conda list --explicit > spec-file.txt同一平台精确复现
YAML 文件conda env export > environment.yml跨平台、团队协作
conda-packconda-pack -n myenv -o myenv.tar.gz离线环境、物理拷贝

六、IDE 集成

6.1 VS Code 配置

VS Code 中使用 Conda 环境的步骤

  1. 安装 Python 扩展(微软官方)。
  2. 打开命令面板:Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+P(macOS)。
  3. 输入 Python: Select Interpreter 并选择。
  4. 在弹出的列表中,会自动检测所有 Conda 环境,选择目标环境即可。
  5. VS Code 重新加载工作区后,状态栏会显示当前 Python 解释器版本,新建终端时会自动激活对应 Conda 环境。

6.2 PyCharm 配置

PyCharm 中配置 Conda 环境的步骤

  1. 打开 File → Settings(或 PyCharm → Preferences on macOS)。
  2. 导航到 Project: <项目名> → Python Interpreter
  3. 点击齿轮图标 → Add → Conda Environment
  4. 选择 Existing environment,在下拉列表中选择已创建的 Conda 环境。
  5. 确认后 PyCharm 会自动使用该环境运行和调试代码。

6.3 Jupyter / JupyterLab

在 Jupyter 中使用 Conda 环境,需将环境注册为内核

bash

# 激活目标环境
conda activate myenv

# 安装 ipykernel(Jupyter 识别 Conda 环境的核心组件)
conda install ipykernel

# 将环境注册为 Jupyter 内核
python -m ipykernel install --user --name myenv --display-name "Python (myenv)"

启动 JupyterLab 后,新建 Notebook 时即可在下拉菜单中选择该内核。

七、高级配置

7.1 配置国内镜像源(加速安装)

在用户目录下创建或编辑 .condarc 文件,添加以下内容可大幅提升中国大陆地区的安装速度

yaml

channels:
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

配置完成后,Conda 将从清华镜像站拉取包。

7.2 配置 conda-forge 为默认通道

bash

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

strict 模式会优先从 conda-forge 解析依赖,减少冲突。

7.3 环境瘦身:清理缓存

bash

# 清理包缓存,释放磁盘空间
conda clean --all

新版 Conda 24.0+ 支持智能清理冗余包

八、最佳实践与常见陷阱

8.1 环境隔离原则

  • 每个项目一个独立环境:避免项目间依赖污染。
  • base 环境仅作管理平台:只装必要开发工具(conda、mamba 等),不装项目依赖包。
  • 导出前确保环境稳定:在项目功能开发完成并通过测试后,再导出 environment.yml

8.2 Conda vs pip 分工

场景推荐工具
科学计算核心库(numpy, pandas, scipy, pytorch)Conda(二进制包,依赖解决完善)
纯 Python 包(如 requests, click)pip(更轻量、兼容性好)
Conda 仓库未收录的包pip
需要特定 C/C++ 依赖的包(如 opencv)Conda(自动处理系统级依赖)

8.3 常见问题排查

问题 1:conda activate 不生效

检查是否已执行 conda init(需重启终端)。旧版 Conda(4.6 之前)需使用 source activate(macOS/Linux)或 activate(Windows)

问题 2:UnsatisfiableError 依赖冲突

优先尝试 -c conda-forge 使用 conda-forge 渠道,或安装 mamba 加速解析

问题 3:激活环境后 python 仍指向系统 Python

检查终端是否已重启,或重新执行 conda init 并重启 Shell。

问题 4:pip 安装的包与 Conda 解析冲突

按“先 Conda 后 pip”原则操作:先用 Conda 安装所需依赖,最后用 pip 补充。一旦用了 pip 安装,后续尽量不要再用 Conda 修改依赖。

九、常用命令速查表

任务Conda 命令
创建环境conda create -n <env> python=<version>
激活环境conda activate <env>
退出环境conda deactivate
列出所有环境conda env list
删除环境conda remove -n <env> --all
安装包conda install <package>
卸载包conda remove <package>
更新包conda update <package>
查看当前环境包列表conda list
导出环境配置conda env export > environment.yml
导入环境配置conda env create -f environment.yml
搜索可用包conda search <package>
清理缓存conda clean --all
更新 Conda 自身conda update conda

通过这份指南,你应该已经掌握了从 Conda 安装到日常开发的完整工作流。记住最核心的原则:每个项目一个独立环境,环境配置纳入版本控制——这两条实践会让你的 Python 开发之路顺畅许多。