# 刪了 conda 環境 Mac 空間沒回來怎麼辦

> 列出 conda 環境和各自的大小，按名稱或路徑刪除環境，弄清楚為什麼刪完磁碟用量幾乎沒變，直到用 conda clean 清掉套件快取。

Published: 2026-11-04 | Updated: 2026-11-05

做了幾個月資料工作的 Mac，上面常有幾個沒人記得是什麼時候建的 conda 環境：一門課一個、一篇論文一個、試用過一次的工具又一個。每個環境都有自己的 Python 和套件，連同 conda 的套件快取，加起來可以占掉幾十 GB。刪除只要兩個指令，但第一個指令跑完後空間常常沒有回來，原因在於 conda 在環境之間共用檔案的方式。

這篇會講怎麼列出現有的環境、怎麼按名稱或路徑刪除、為什麼刪完磁碟用量幾乎沒變，以及 `conda clean` 如何把剩下的空間還給你。Anaconda、Miniconda、Miniforge 和 Mambaforge 都適用。想移除 conda 本身，可以看[在 Mac 上解除安裝 Python 和 Node](https://mole.fit/tw/blog/how-to-uninstall-python-node-mac)。

## 列出你的環境

```
conda env list
```

`conda info --envs` 會得到同樣的清單。目前啟用的環境前面有星號，每一行會顯示它的資料夾，通常是 `~/miniconda3/envs/<name>` 或 `~/anaconda3/envs/<name>`。沒有名稱的那一行是 `base`，也就是 conda 自己所在的環境，不要動它。

要看每個環境用了多少空間：

```
conda info --size
```

這會列出 conda 統計的每個環境的磁碟用量。如果你的 conda 版本沒有這個選項，就直接量資料夾：

```
du -sh ~/miniconda3/envs/* ~/miniconda3/pkgs
```

依照你的安裝，把 `miniconda3` 換成 `anaconda3`、`miniforge3` 或 `mambaforge`。

## 刪除之前先存起來

之後可能還會用到的環境，只要留一個小檔案就夠了。先啟用它，再匯出：

```
conda activate myenv
conda env export --from-history > myenv.yml
```

`--from-history` 只寫入你明確要求安裝的套件，所以這個檔案可以在另一台 Mac 或較新的 conda 上重建。如果要在同一個平台上做到位元組級的重建，改用 `conda list --explicit > myenv-spec.txt`。兩種檔案都能在之後用 `conda create --file myenv.yml` 把環境找回來（舊版本用 `conda env create --file myenv.yml`）。

## 刪除環境

conda 的文件說，刪除環境時它不能處於啟用狀態，所以先退出來：

```
conda deactivate
conda remove --name myenv --all
```

`conda env remove --name myenv` 效果相同。加上 `--dry-run` 可以只看會刪掉什麼，而不真的刪。

用 `--prefix` 建在 `envs` 之外的環境，例如放在專案資料夾裡，conda 沒有名稱可以查。這時按路徑刪除：

```
conda remove --prefix ~/projects/thesis/.env --all
```

在 Finder 裡把環境資料夾丟進垃圾桶，釋放的檔案是一樣的，但還是指令比較乾淨：它也會更新 conda 自己的環境記錄，而 `conda env list` 和 `conda clean` 讀的就是這份記錄。

## 為什麼空間沒有回來

conda 把每個套件只下載一次，放進安裝資料夾裡的 `pkgs` 套件快取，再用硬連結把這些檔案接到每個用到它的環境裡。conda 自己的文件是這樣說的：多虧硬連結，環境占的空間很小。硬連結是同一份資料在磁碟上的另一個名字，所以資料會一直留著，直到最後一個名字也消失。

刪除環境，刪掉的是它的那些名字。`pkgs` 裡的那一份還在，所以安裝資料夾用 `du` 看起來和之前差不多。快取裡還留著下載來的 `.conda` 和 `.tar.bz2` 壓縮檔，以及頻道的索引檔，套件一旦安裝完成，這些東西沒有任何環境需要。

## 用 conda clean 拿回剩下的

先預覽：

```
conda clean --all --dry-run
```

再執行：

```
conda clean --all
```

| 旗標 | 移除的內容 |
| --- | --- |
| `-i`、`--index-cache` | 下載的頻道索引檔，conda 之後會再抓 |
| `-t`、`--tarballs` | 已解壓縮到快取中的套件壓縮檔 |
| `-p`、`--packages` | 沒有任何環境連結到的已解壓縮套件 |
| `-c`、`--tempfiles` | 殘留的暫存檔 |
| `-l`、`--logfiles` | 記錄檔 |
| `-a`、`--all` | 以上全部 |

用 `-p` 之前，值得先讀一下 conda 文件裡的一句警告：它只檢查 `conda info --envs` 列得出來的環境。它不認得的環境，例如另一個 conda 安裝建的環境，或是登記在其他使用者底下的環境，可能會失去它仍然連結著的套件。如果你把環境放在一般位置之外，先跑 `conda env list`，確認它們有出現在清單裡。

不要用 `--force-pkgs-dirs`。它會刪除所有可寫入的套件快取，刻意不包含在 `--all` 裡，還會弄壞依賴這些檔案的環境。

## Mamba 和其他安裝

Mamba 接受同樣的指令：`mamba env list`、`mamba remove --name myenv --all`、`mamba clean --all`。如果你裝了不只一個，比如好幾年前的 Anaconda 和現在的 Miniforge，每一個都有自己的 `envs` 和 `pkgs`；要用各自的 `conda` 去清，或是在 Finder 裡把兩個資料夾都看一遍，別急著假設空間去了別的地方。如果你的 shell 裡設定了 `CONDA_PKGS_DIRS` 和 `CONDA_ENVS_PATH`，這兩個資料夾的位置會跟著改變。

## Mole 能幫什麼

[Mole](https://mole.fit/tw/) 的**清理**會在你的家目錄裡找 conda 安裝（`~/miniconda3`、`~/anaconda3`、`~/miniforge3`、`~/mambaforge`，以及 `~/opt` 底下的兩個），而且只算有真正的 `conda-meta` 和 `pkgs` 資料夾的安裝。在**開發工具**底下，它會列出一個 **Conda Cache** 群組，有兩種項目：`pkgs` 裡已經有解壓縮副本、而且一天沒有被碰過的套件壓縮檔，以及 `pkgs/cache` 索引資料夾，也就是 `conda clean --index-cache` 會移除的那部分。每一列都標為**需確認**，而且預設不勾選。Mole 不會碰已解壓縮的套件或環境本身，也不會執行 `conda`，你勾選的項目會被移到垃圾桶。刪除環境本身仍然是 `conda remove` 的工作。其他開發用快取，可以看[在 Mac 上清理開發快取](https://mole.fit/tw/blog/how-to-clear-dev-caches-mac)，從 Xcode、npm 一路講下去。

## 常見問題

### 手動刪除 pkgs 資料夾安全嗎？

整個刪掉不行。環境是用硬連結接到裡面的檔案，conda 也預期它的記錄放在那裡。請用 `conda clean --all`，它只會移除沒有環境需要的東西。

### 刪除環境會把我的筆記本和資料也刪掉嗎？

只有環境資料夾裡面的檔案會被刪掉。專案資料夾裡的筆記本、腳本和資料都會留著，除非你是用 `--prefix` 把環境建在專案裡，而且資料也放在同一個資料夾。

### 可以刪除 base 環境嗎？

不行。base 裡面是 conda 本身。想全部清掉，就解除安裝 conda，[Python 和 Node 的解除安裝指南](https://mole.fit/tw/blog/how-to-uninstall-python-node-mac)有說明。

### conda clean --all 會讓下次安裝變慢嗎？

會慢一點。conda 要重新下載索引，也要抓回快取裡已經沒有的套件。你的環境仍然可以照常使用。

---

Canonical HTML page: https://mole.fit/tw/blog/delete-conda-environments-mac
Blog index for agents: https://mole.fit/tw/blog/llms.txt
Site index for agents: https://mole.fit/llms.txt
