如果您正在使用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.yml中的name: myenv改為name: myenv-dev,然後:

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

這樣您就能以不同的名稱獲得相同的配置。


7. 常用的conda模式整理

當基於Miniconda構建環境時,整理一些常用的有用模式。

  1. 每個項目各創建一個環境

    • proj-a-envproj-b-env這樣以項目名稱為環境命名

    • 方便管理版本而不會相互衝突。

  2. 環境僅在安裝最小後在需要時才擴展

    • 最初僅安裝python及其他幾個基本包

    • 在開發過程中需要時使用conda installpip install進行擴展
      → 這非常符合Miniconda的精簡理念。

  3. 重要的環境定期導出

    • 在發布時、分發前:

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

    • 如果將該文件提交至版本控制系統,
      團隊成員能輕鬆復現相同的環境。

  4. 在大規模變更前用克隆進行備份

    • 在大規模升級包、更改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環境管理將不再是麻煩事,而是“保持項目整潔的可靠習慣”。