終端機顯示 conda: command not found,或套件已安裝卻在 JupyterLab 匯入失敗。

最快解法:不要反覆覆蓋安裝;先按安裝器架構、Shell 路徑、相依套件求解、原生函式庫錯誤四層分類,再決定修復或重建。

這篇適合三類讀者:剛接觸 macOS、需要建立 Python 科研環境的研究生;從 Intel、Windows 或 Linux 遷移專案到 Apple Silicon 的科研人員;以及要替課題組交付可重現 conda 環境的技術支援人員。

先用症狀鎖定故障層

Miniforge Apple Silicon 安裝失敗,不一定代表 Apple Silicon 不相容。你先記下錯誤出現的位置,再執行最小診斷。不要一開始刪除整個環境,否則原本可供比對的資訊也會消失。

可觀察症狀 優先檢查 應保存的證據 暫停條件
安裝程式中途退出 安裝器架構、檔案完整性、權限 終端機完整輸出、安裝器檔名 不確定檔案來源或架構時,停止重裝
安裝完成但找不到 conda PATH、zsh 初始化區塊、安裝目錄 command -v conda~/.zshrc 備份 發現兩套以上 conda 時,先不要改 PATH
求解依賴失敗 頻道、平台建置、版本條件 conda config --show-sources、完整求解錯誤 base 環境已有大量手動套件時,停止疊加
套件能安裝但無法匯入 Python、原生函式庫與核心架構 python -c 測試結果、完整 traceback 終端機與 Notebook 使用不同 Python 時,先修核心

先保存錯誤,再處理環境。若錯誤訊息只剩一行,重新執行時可將終端機輸出導向文字檔,並保留安裝器名稱與當時所在目錄。這些資料比「再裝一次」更能分辨問題來源。

核對 Apple Silicon 與安裝器架構

在 Apple Silicon Mac 上,先查目前 Shell 看到的處理器架構:

uname -m

輸出為 arm64 時,優先使用 Miniforge 官方 Release 提供的 MacOSX-arm64 安裝器。官方 README 與最新 Release 頁面都將安裝器名稱與平台分開列出,應以官方檔名為準,而不是從第三方重新打包頁面下載:

下載後先核對檔案名稱:

file ~/Downloads/Miniforge3-MacOSX-arm64.sh

再確認安裝位置是否與預期一致。若你之前從 Intel Mac、舊備份或 Windows/Linux 遷移過專案,可能同時留下 x86_64 的環境目錄。Apple 的遷移文件說明了原生 Apple Silicon 與 Intel 架構應用程式之間的差異;Rosetta 可以協助執行部分 Intel 應用程式,但不等於所有 conda 套件都會自動變成可混用的原生函式庫。Apple Silicon 應用程式遷移說明

注意:不要把「在 Rosetta 下能開啟某個程式」當成科研環境已完成驗收。Python、NumPy 類套件、編譯器與 Jupyter 核心仍可能使用不同架構。

官方安裝器可依 README 的方式執行。本文不提供第三方安裝腳本,也不把論壇個案當成普遍相容性結論。若 uname -m 與安裝器檔名矛盾,先停止,確認你是否在 Rosetta 終端機中執行,並重新開啟原生終端機比對。

修正 Shell 初始化與 PATH 衝突

「安裝成功但找不到 conda」通常不是 Miniforge 沒有安裝,而是目前 Shell 沒有載入正確路徑。先執行:

command -v conda
conda info --base
echo $PATH

如果第一個指令沒有輸出,第二個指令也無法執行,先找出實際安裝目錄,再依官方文件以該目錄初始化 zsh。不要直接覆蓋整份 ~/.zshrc,因為其中可能還有 SSH、Homebrew 或課題組工具的設定。

建議順序如下:

  1. 備份 ~/.zshrc,並記下目前的 PATH。
  2. 搜尋設定檔中的 conda initialize 區塊與舊安裝路徑。
  3. 確認初始化指向目前使用的 Miniforge 目錄。
  4. 開啟新的終端機,重新執行 command -v conda
  5. conda info --base 確認命中的根目錄。
  6. 執行 conda env list,檢查舊環境是否仍被錯誤路徑引用。

若每次開啟終端機都自動啟用 base,不必刪除 base。先確認這是 Shell 初始化行為,而不是環境損壞;再按 conda 官方的環境管理方式調整自動啟用設定。conda 官方環境管理文件

停止條件很明確:只要你看到兩個不同安裝目錄,或 conda info --base 與 PATH 指向不同位置,就不要繼續安裝科研套件。先完成路徑整理,否則後續每一個結果都可能來自不同 conda。

分離 conda-forge 求解與套件缺失

conda-forge 是頻道,不是「所有套件必然可用」的保證。當 osx-arm64 套件找不到時,先分辨四種情況:

  • 頻道設定錯誤:目前設定檔沒有載入預期頻道,或多個來源優先順序互相衝突。
  • 沒有原生建置:套件尚未提供 osx-arm64 版本。
  • 版本條件互斥:Python、核心套件與課題工具要求不同版本。
  • 網路下載失敗:索引或套件檔案尚未完整取得。

先在新環境中測試,不要污染 base:

conda create -n research-check python
conda activate research-check
conda info
conda config --show-sources

把完整求解輸出保存下來,再逐項檢查套件名稱與平台建置。若目標套件沒有 osx-arm64 版本,改裝同名 x86_64 套件未必能解決問題,還可能引入混合架構的原生函式庫。此時應向軟體維護者確認支援範圍,或將該步驟留在 Linux/HPC 環境。

求解成功只表示依賴圖能成立,不表示課題程式已能執行。科研資料分析工具常依賴編譯函式庫、外部命令或特定輸入格式。你應在隔離環境中加入最少套件,完成一次與課題相關的實際樣例,再決定是否匯入完整 environment.yml

對齊 Python、原生函式庫與 JupyterLab

最常見的錯位是:終端機使用 A 環境,JupyterLab 核心卻來自 B 環境。先在已啟用的環境內查詢:

which python
python -c "import sys; print(sys.executable)"
which jupyter
jupyter kernelspec list

python 路徑與 Jupyter 核心路徑不同,先修正核心,不要重裝全部套件。JupyterLab 官方安裝文件提供以 conda-forge 建立與安裝的方式,可用來對照你的安裝流程。JupyterLab 官方安裝文件

驗收時至少做三件事:

  1. 在目標環境內啟動 JupyterLab。
  2. 在 Notebook 中列印 sys.executable,確認與終端機相同。
  3. 執行一個會讀取課題樣本、完成核心計算並輸出結果的最小程式。

如果錯誤訊息涉及動態函式庫,先看完整 traceback 與被載入的檔案路徑。不要只因為 Notebook 能開啟就判定環境正常;介面啟動與科研程式匯入是兩個不同驗收項目。

用乾淨環境完成重建與交付

當本機有多套 conda、歷史遷移紀錄混亂,或實驗室沒有穩定可用的 Mac,最有效的分流方式是使用一台乾淨的 Apple Silicon Mac 重建最小環境。這不是逃避排查,而是把「本機污染」與「專案本身限制」拆開。

驗收階段 你要做的事 通過標準
架構 核對 uname -m、安裝器名稱與 Python 路徑 三者指向同一原生架構
建立 用全新環境安裝必要套件 不修改 base,求解輸出可保存
匯入 執行核心套件匯入測試 無動態函式庫或架構錯誤
真實樣例 執行課題中的最小資料流程 產生可比對的結果
交付 匯出環境並在另一個乾淨目錄重建 重建後仍可完成樣例

可把環境檔與測試資料分開保存。環境檔描述套件,不能取代原始資料、外部工具與研究流程文件。若團隊要在 Windows、Linux 與 macOS 之間協作,也應把平台特定套件和不可移植步驟註明清楚;不要假設同一份檔案在所有平台都能無修改重建。

需要遠端 Mac 時,先查看 MACCOME 的遠端 Mac 方案,確認交付方式是否符合你的 SSH、VNC 或資料傳輸需求。若你希望比較不同地區的遠端主機選項,也可以參考 香港遠端 Mac 算力方案,再確認連線路徑是否適合你的課題流程。若課題需要長時間保留環境,則應同時比較本地 Mac、實驗室共用主機與遠端租用,不要只看首次安裝是否成功。

安裝方案與風險對照

方案 適合情況 優點 主要風險
原生 arm64 Miniforge 新建 Apple Silicon 科研環境 架構單純,便於交付 個別舊套件可能沒有原生建置
x86_64 Miniforge 加 Rosetta 專案明確依賴 Intel 工具鏈 可延續部分舊工具 Python 與原生函式庫容易混架構
沿用舊環境 只作短期比對 不必立即重建 PATH、頻道與遷移殘留難以追蹤
乾淨遠端 Apple Silicon Mac 本機已污染或沒有可用 Mac 可重現、便於驗收交付 需規劃連線、資料保存與權限

故障排查勾選清單

  • [ ] 已保存完整錯誤輸出、安裝器檔名與目前目錄。
  • [ ] 已用 uname -m 核對 Mac 的處理器架構。
  • [ ] 已用 file 檢查官方安裝器,而不是第三方重新打包檔。
  • [ ] 已備份 ~/.zshrc,沒有直接覆蓋整份 Shell 設定。
  • [ ] 已確認 command -v condaconda info --base 指向同一套安裝。
  • [ ] 已在新環境中測試 conda-forge 與目標 osx-arm64 套件。
  • [ ] 已核對終端機 Python、JupyterLab 與核心使用同一環境。
  • [ ] 已用課題樣本完成一次真實流程,而不只是開啟 Notebook。
  • [ ] 已匯出環境,並在乾淨位置重新建立測試。
目前狀況 優先選擇 不建議做法
單一原生安裝,只有 PATH 問題 修正 zsh 初始化 重裝全部套件
有 Intel 遺留環境,但專案可更新 新建 arm64 環境 把舊目錄直接搬入新環境
目標套件沒有 osx-arm64 建置 查維護者支援範圍,改用替代平台 無限更換頻道
本機多套 conda 且結果不可重現 在乾淨遠端 Mac 重建 繼續修改現有 base
只在 Notebook 失敗 修正 Jupyter 核心對應 只重新安裝 JupyterLab
交付選項 成本結構 控制能力 適用限制
自購 Mac 一次性硬體支出,加上維護與折舊 最高,可保留本地資料 預算與硬體取得時間較高
實驗室共用 Mac 依校內資源分攤 受排程、帳號與權限影響 不適合需要固定重現的個人課題
遠端 Mac 租用 按研究週期支付使用費 可取得完整 macOS 環境與管理權限 需處理連線品質及資料同步
僅用 Linux/Windows 沿用既有設備 既有工具鏈成熟 無法直接驗證 macOS 專屬或原生行為

如果你已經排除架構、PATH、頻道與核心錯位,卻仍無法判斷是專案依賴問題還是本機歷史環境污染,繼續修補原機通常只會增加變數。相較之下,直接在乾淨遠端 Mac 上重建並驗收,可以避開實驗室沒有可用 Mac、共用主機排程不穩,以及本機多套 conda 互相干擾等缺點。若驗收結果符合課題需求,再決定是否購買自己的 Mac;若只在研究週期或測試階段使用,租用 MACCOME 的 Mac 環境會更容易控制支出與交付範圍。

FAQ 放在文章結尾前,方便你把高頻故障轉成可執行的判斷,而不是回到反覆重裝的循環。