如果您正在使用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構建環境時,整理一些常用的有用模式。
-
每個項目各創建一個環境
-
像
proj-a-env、proj-b-env這樣以項目名稱為環境命名 -
方便管理版本而不會相互衝突。
-
-
環境僅在安裝最小後在需要時才擴展
-
最初僅安裝
python及其他幾個基本包 -
在開發過程中需要時使用
conda install或pip install進行擴展
→ 這非常符合Miniconda的精簡理念。
-
-
重要的環境定期導出
-
在發布時、分發前:
bash conda env export -n proj-a-env --from-history > proj-a-env.yml -
如果將該文件提交至版本控制系統,
團隊成員能輕鬆復現相同的環境。
-
-
在大規模變更前用克隆進行備份
-
在大規模升級包、更改Python版本之前:
bash conda create -n proj-a-backup --clone proj-a-env -
出現問題時可以迅速恢復到備份環境。
-

結語:輕裝上陣,必要時擴展
總結來說,選擇非常簡單。
-
Anaconda是“一次性安裝所有可能需要的包”的方式
-
Miniconda則是“隨需安裝真正需要的內容”的輕量級方式
在如今每個項目所需的Python版本、包組合各異的情況下,
Miniconda + 充分管理的conda環境的組合更加靈活。
環境可以通過:
-
創建(
conda create) -
啟用(
conda activate) -
刪除(
conda env remove) -
克隆(
conda create --clone) -
移至其他地方(
conda env export/conda env create)
掌握這些,就能在每次啟動新項目時,
免於“這次該刪除什麼,再安裝什麼?”之困擾。
未來啟動新項目時,請:
-
基於Miniconda創建一個新環境
-
在其中安裝真正需要的包。
-
如果環境配置令您滿意,則導出為
env.yml,
在下一個項目中稍作修改以重用即可。
這個模式一旦於您熟記於心,conda環境管理將不再是麻煩事,而是“保持項目整潔的可靠習慣”。
目前沒有評論。