Conda 紀錄你環境中所有的套件版本
在 Anaconda 中,對應到 Poetry pyproject.toml 的標準作法是產生一個 environment.yml 檔案。
這個檔案會紀錄你環境中所有的套件版本,讓你推上 Git 後,在別台電腦(或重新安裝系統後)能一鍵還原。
這裡有兩種導出方式,針對你的需求(放進 Git),我強烈建議使用 方法二。
方法一:完整導出 (包含所有依賴細節)
這是最暴力的方式,它會把所有套件(包括依賴的依賴)的精確版本與 Build String 全部記下來。
缺點: 跨平台相容性差。如果你在 Linux 導出,拿到 Windows 或 Mac 通常會安裝失敗(因為底層 Build String 不同)。
conda env export > environment.yml
方法二:精簡導出 (推薦給 Git 使用)
加上 --from-history 參數。這只會列出你手動下指令安裝的那些頂層套件,讓 Conda 在新環境重新解析依賴關係。這最像 Poetry 的 pyproject.toml 邏輯。
優點: 跨平台相容性好,檔案乾淨,適合放進 Git。
conda env export --from-history > environment.yml
產出的 environment.yml 會長這樣:
name: my_quant_env
channels:
- defaults
dependencies:
- python=3.10
- pandas
- tensorflow
- scikit-learn
- pip:
- some-pip-package
如何在新環境還原 (Restore)
當你在新電腦 clone 下你的 Git repo 後,只要執行以下指令,Conda 就會依照 environment.yml 自動建立環境並安裝所有 libs:
1. 建立全新環境:
conda env create -f environment.yml
- 或是更新現有環境:
如果你已經在環境裡,只是想同步新的 yml 設定:
conda env update -f environment.yml --prune
💡 重要小提醒 (Pro Tip)
當你使用 conda env export 時,最後一行通常會自動產生一個 prefix: /home/user/anaconda3/envs/xxx。
建議在 commit 進 Git 之前,手動刪除這行 prefix。
因為別台電腦的路徑一定跟你的不一樣,留著那一行有時候會導致 Conda 報錯或混淆。