打包 Conda 環境:conda env export 與 conda pack 教學

2025/03/27 Python

打包 Conda 環境:conda env export 與 conda pack 教學

在開發或部署專案時,環境的遷移與重現性非常重要。有時候我們需要將已建立好的 conda 環境移植到另一台電腦,或在沒有網路的環境下還原環境。本文將介紹兩種常用的方法:

  • conda env export:適用於有網路環境下,透過匯出 YAML 檔案來描述環境,再在目標機器上根據此檔案重建環境。
  • conda pack:適用於沒有網路的環境下,將整個 conda 環境打包成壓縮檔,方便離線遷移與備份。

方法一: conda env export

概述

conda env export 指令可以將當前環境中的所有套件(包括其版本與來源 channel)匯出成一個 YAML 格式的檔案。這份檔案描述了環境的完整配置,可在目標機器上使用 conda env create 指令來還原環境。

使用方法

首先確保終端機已經進入要備份的 conda 虛擬環境中。

  • 匯出環境

    conda env export > environment.yml  
    

    此命令會產生一個 environment.yml 檔案,其中包含所有套件、版本與 channel 資訊。

  • 還原環境

    在目標機器上,只要有網路連線,透過下列指令即可根據 YAML 檔案建立環境:

    conda env create -f environment.yml  
    

    我們也可以在執行指令時指定新的環境名稱。舉例來說,可以使用:

    conda env create -n myenv -f environment.yml
    

優缺點

  • 優點
    • 操作簡單,易於版本控制與分享。
    • 可精準描述環境配置,適合多人協作或部署至雲端伺服器。
    • 可以跟 Docker 結合快速啟動環境。
  • 缺點
    • 還原環境時需要網路連線,因為會從指定的 channel 下載套件。
    • 當某些套件在 channel 上更新或下架,可能會影響環境的還原。

方法二: conda pack

概述

conda pack 是一個用於打包整個 conda 環境的工具,它會將環境中所有的檔案與套件打包成一個壓縮檔(例如 tar.gz)。這樣的好處是可以在沒有網路的情況下,直接解壓縮並使用相同的環境。第一步先在 base 環境安裝 conda-pack。

pip install conda-pack

使用方法

此打包方式建議在預設的 base 環境下執行。

  • 打包環境

    假設你要打包名為 myenv 的環境,可以執行:

    conda pack -n myenv  
    

    這個命令會產生一個 myenv.tar.gz 壓縮檔,包含整個環境的所有檔案。

  • 解壓並使用環境

    在目標機器上,先在conda安狀路徑下的envs資料夾中建立資料夾(名稱可以自取,等同環境名稱),接著解壓縮該檔案:

    mkdir myenv  
    tar -xzf myenv.tar.gz -C myenv
    

    解壓後,你就可以直接使用這個環境,而不必重新下載套件。

優缺點

  • 優點
    • 完整打包環境,適合離線部署或環境備份。
    • 不依賴外部網路,即使目標機器無法連線,也能還原環境。
  • 缺點
    • 打包的壓縮檔可能會比較大,不便於網路傳輸。
    • 若目標機器的路徑與打包時不一致,可能需要執行 conda-unpack 來修正環境中的路徑。

總結

本篇文章介紹了兩種打包 Python 環境的技巧。根據不同的情境選擇合適的方法,能夠讓你的 conda 環境在遷移與備份上更為穩定與高效。

  • 有網路環境下:推薦使用 conda env export 方法。透過匯出 YAML 檔案,能夠輕鬆記錄並還原環境,但前提是目標環境必須有網路連線來下載套件。
  • 無網路環境下:則可使用 conda pack 將整個環境打包成壓縮檔,直接搬移與解壓使用,確保環境中的所有套件均被攜帶,不必依賴外部資源。
鼓勵持續創作,支持化讚為賞!透過下方的 Like 拍手👏,讓創作者獲得額外收入~
版主10在2020年首次開設YouTube頻道,嘗試拍攝程式教學。想要了解更多的朋友歡迎關注我的頻道,您的訂閱就是最大的支持~如果想學其他什麼內容也歡迎許願XD
https://www.youtube.com/channel/UCSNPCGvMYEV-yIXAVt3FA5A

Search

    Table of Contents

    文章目錄