如果您正在通过conda管理Python开发环境,我们建议您先阅读下面的文章。

下面的文章简要回顾了这些内容,重点整理了实际使用中的conda环境创建、删除、复制和迁移方法的实用指南。


1. Anaconda vs Miniconda 一句话总结



可以总结如下:

  • Anaconda:
    → 一次性安装经常用于数据科学和机器学习的包的综合包分发版

  • Miniconda:
    → 仅提供conda环境/包管理功能,
    开发者根据需要自行选择和安装包的迷你分发版

由于我更偏好“轻松开始,仅在必要时增加包的风格”,因此,我建议尽量安装Miniconda并在其上搭建环境

  • 更少占用磁盘空间

  • 更新更少麻烦

  • 仅安装每个项目所需的内容,环境更整洁的优点


2. 快速了解conda环境概念

conda的“环境(environment)”可以简单理解为按项目隔离的Python/包集合

  • env A: Python 3.10 + Django 4 + 特定库版本

  • env B: Python 3.11 + FastAPI + 完全不同的库组合

这样隔离不同版本之间互相干扰是关键。

关于环境的基本常用命令如下:

# 查看当前安装的conda环境列表
conda env list

# 或者
conda info --envs

3. 创建conda环境



3.1 创建最基本的环境

conda create -n myenv python=3.12
  • -n myenv : 指定环境名称为myenv

  • python=3.12 : 使用Python 3.12版本

环境创建后:

conda activate myenv   # 激活环境
conda deactivate       # 取消激活环境

3.2 创建同时安装常用包

conda create -n myenv python=3.12 numpy pandas matplotlib

将在已安装Miniconda的默认通道中一起安装上述包的新环境被创建。

之后:

conda activate myenv
conda install scikit-learn
# 或者
pip install requests

可以在需要时逐步添加包。


4. 删除conda环境

不再使用的环境应果断删除。
(conda环境相当占用磁盘空间。)

# 删除myenv环境
conda env remove -n myenv

删除后确认:

conda env list

myenv如果从列表中消失,说明正常。


5. 复制conda环境 (clone)

当您想要创建“设置类似但名称不同的环境”时,非常有用,可以用于实验性安装多个包的环境。

# 以existing-env为基准创建名为new-env的复制环境
conda create -n new-env --clone existing-env
  • 也会复制包版本,因此,

  • “保持原环境不变,想进行新的实验时”经常使用的模式。

复制后:

conda activate new-env

可以检查是否正常工作。


6. 迁移conda环境 (export / import)

当您想将环境移到另一台PC或服务器时,
将环境导出为文件后(import/export),根据该文件创建新环境是最常见的方式。

6.1 导出环境(export) – 生成YAML文件

# 将myenv环境导出为env.yml文件
conda env export -n myenv > env.yml

这个env.yml文件中包括:

  • 环境名称

  • 正在使用的通道信息

  • 安装的包及其版本

这些记录在其中。

如果想仅导出基于历史的最小列表

如果想仅记录“我自己安装的包”,而不是完整的列表(已包含依赖),可以:

conda env export -n myenv --from-history > env-min.yml

这样创建后,当在其他环境中create时,
所需的依赖会由conda自动解决。

6.2 在其他地方(或同一台机器)创建环境

在另一台PC、服务器,或者同一机器的新位置:

conda env create -f env.yml

这样根据env.yml中定义的名称和包版本将创建环境。

  • 如果env.yml中写了name: myenv,则将以该名称创建

  • 如果想更改名称,可以直接编辑env.yml文件中的name:部分,然后执行

例如,将env.ymlname: myenv更改为name: myenv-dev后:

conda env create -f env.yml
conda activate myenv-dev

可以获得相同配置但名称不同的环境。


7. 常用的conda模式总结

在基于Miniconda搭建环境时,整理了一些常用的有用模式。

  1. 每个项目各自一个环境

    • 可以根据项目名称命名环境,例如proj-a-env, proj-b-env

    • 可以便于版本管理而不互相冲突。

  2. 环境最小安装后在需要时再扩展

    • 开始时仅安装python + 几个基本包

    • 在开发中,随需要扩展使用conda installpip install
      → 这与Miniconda的简约哲学相符合。

  3. 重要环境定期导出

    • 在发布时、部署前:

      bash conda env export -n proj-a-env --from-history > proj-a-env.yml

    • 将此文件提交到版本控制中,
      使团队成员可以轻松复现相同的环境。

  4. 在大规模更改前使用clone备份

    • 在进行大规模包升级或更改Python版本之前:

      bash conda create -n proj-a-backup --clone proj-a-env

    • 如出现问题,可以快速回退到备份环境。


python conda环境图片

总结:轻松开始,必要时扩展

总结起来选择非常简单。

  • Anaconda是一种一次性安装“可能需要的包”方式

  • Miniconda是一种“真正需要的内容随时安装”的轻量方式

在项目对Python版本和包组合需求各不相同的情况下,
Miniconda + 管理良好的conda环境组合要灵活得多。

环境可以:

  • 创建(conda create)

  • 激活(conda activate)

  • 删除(conda env remove)

  • 复制(conda create --clone)

  • 迁移(conda env export / conda env create)

如果掌握了这些,开始新项目时就能够
在“这次要删掉什么,这次要重新安装什么?”的困扰中获得很大的自由。

未来在开始新项目时可以:

  1. 基于Miniconda创造一个新环境

  2. 并在其中安装真正需要的包

  3. 如果对环境配置满意,请导出为env.yml
    在下一个项目中稍作修改即可复用。

一旦掌握了这个模式,conda环境管理将不再是一件烦琐的事情,而是成为“保持项目整洁的良好习惯”。