Mac中彻底干净卸载Anaconda的完整清理指南
1. 为什么你非要卸载 Anaconda3,而不是直接删文件夹
先交代背景。我之前在 Mac 上装 Anaconda3 用来跑 Python 数据分析和机器学习 项目,Anaconda 确实方便,conda 一条命令就能管理环境,预装了一堆科学计算库,特别适合不想折腾依赖关系的人。但后来问题来了:Anaconda 默认把 Python 环境、包管理器、启动脚本、配置文件、缓存全塞进系统里,时间长了我发现两个麻烦——第一,项目要交付给同事,对方用的是纯 Python + venv,我本地 conda 环境根本不通用;第二,conda 自带的 Python 版本和项目要求有冲突,我每次都要额外处理 PATH 顺序,烦得很。卸载重来成了最干净的选择。
但 Mac 上卸载 Anaconda3 有个大坑:很多人以为把 /opt/anaconda3 或者 ~/anaconda3 拖进废纸篓就完事了。实际上这样会残留大量东西,最常见的是 shell 配置文件里的 conda 初始化代码,还有 ~/.conda 、 ~/.condarc 、 ~/Library 下的各种缓存和偏好设置。更麻烦的是,Anaconda 在安装时会往 /Applications 里放一个 Anaconda-Navigator.app,在 ~/Applications 里也可能有 PyCharm 之类的集成配置,这些不手动清掉,系统会一直留着痕迹。
我从自己踩坑的经验出发,把这次“安全干净卸载”的过程完整复盘一遍,包括我自己实际执行过的命令、遇到过的报错、以及为什么每个步骤都不能省。这篇内容适合所有在 Mac 上装了 Anaconda3 又打算彻底清掉的读者,不管你是换回原生的 Python 环境,还是准备重装新版本的 Anaconda,照这个流程走一遍,基本不会留下什么隐患。
2. 卸载前的准备工作:把该备份的备份好
2.1 先把 conda 环境导出备份
我见过不少人卸载之前不备份,装完之后发现某个项目跑不起来了,代码本身没问题,就是依赖环境全没了。所以动手删除之前,至少要确认两件事:第一,你有哪些 conda 环境是需要长期保留的;第二,这些环境的依赖列表你是否已经导出。
如果你有自定义的 conda 环境,比如 my_env ,建议先激活它并导出配置:
conda activate my_env conda env export > my_env_backup.yaml
如果你是 base 环境里装了一堆包,也可以备份:
conda list --explicit > base_env_backup.txt
这个备份文件很小,放到项目目录或者网盘里都行。未来如果需要重新搭环境,直接:
conda env create -f my_env_backup.yaml
就能把同名环境装回来。 conda env export 会带上 pip 安装的包以及 conda 的 channel 信息,恢复的时候准确率很高。实测下来比一个个手动记包名稳得多。
另一个容易忽略的是 .condarc 文件,它记录了你自定义的镜像源和 channel 配置。如果你之前为了提高下载速度改过清华源、阿里源,这个文件建议也备份,内容一般是这样的路径: ~/.condarc 。之后重装 Anaconda 或者 Miniconda,直接把这份配置放回去,就不用重新折腾源了。
提示:如果你压根没打算保留任何 conda 环境和包,备份这步可以跳过。但我的建议是,哪怕不导 YAML,至少把项目代码里用到的 requirements.txt 或者 environment.yml 检查一遍,确认没有遗漏的关键依赖。
2.2 确认你确定要删的版本和安装路径
Anaconda3 在 Mac 上常见的安装位置有三个可能:
- /opt/anaconda3 :图形安装器默认路径,也是 macOS 上最新版安装器常用的路径
- ~/anaconda3 :旧版本或者某些命令行方式安装的路径
- /usr/local/anaconda3 :较早版本的常见路径
在动手之前先用命令确认一下你的 Anaconda 到底装在哪:
which conda conda info --base
第一条告诉你能用的 conda 命令是哪个路径,第二条告诉你 Anaconda 的 base 环境根目录。知道了这个路径,后续清理才有的放矢。不要盲目去删 ~/anaconda3 ,如果你的实际安装位置是 /opt/anaconda3 ,删错目录会非常尴尬。
还需要确认的是当前 shell 的类型。Mac 默认从 Catalina 开始用 zsh,但很多老用户升级上来之后仍然在用 bash。这个决定了你后续要改哪个配置文件。输入:
echo $SHELL
如果输出 /bin/zsh ,你要处理的文件是 ~/.zshrc ;如果输出 /bin/bash ,你要处理的文件是 ~/.bash_profile 和 ~/.bashrc 。这一步很容易被忽略,我有一次卸载之后发现终端每次打开还是报 conda: command not found ,就是因为只改了一个配置文件,另一个配置文件里的残留代码还在报错。
2.3 看一眼系统上有没有其他 Python 在跑
Mac 上本来就带一个系统 Python 3(在 /usr/bin/python3 ),如果你还装过 Homebrew 的 Python(在 /opt/homebrew/bin/python3 或者 /usr/local/bin/python3 ),那么 Anaconda 的 Python 只是其中之一。卸载完后,你要确保系统的 Python 命令不会紊乱。
建议卸载前记录一下当前 PATH 内容:
echo $PATH | tr ':' '\n'
这样卸载完再执行一次,对比一下就知道 Anaconda 的路径有没有被彻底清除。
3. 官方卸载命令和手动删除的取舍
3.1 官方卸载脚本到底干掉了什么
Anaconda3 官方其实提供了一个卸载命令,网上很多教程会让你直接跑这段:
conda install anaconda-clean anaconda-clean --yes
anaconda-clean 的作用是清理用户主目录下的 .conda 、 .condarc 、 .matplotlib 、 .ipython 之类的配置文件,把 conda 相关的隐藏文件做一次“消毒”。跑完之后,它会把原来的文件移到备份目录 ~/.anaconda_backup/ ,而不是直接删除,这点算是它的一个保护机制。
但官方脚本不会帮你删 Anaconda 安装目录本身。也就是说,跑完 anaconda-clean 之后,你还需要手动删除 Anaconda3 所在的文件夹。所以完整流程应该是:
- 用 anaconda-clean 清理用户级配置文件
- 手动删除安装目录 /opt/anaconda3 或 ~/anaconda3
- 手动删除 /Applications 里的 Anaconda-Navigator
- 手动清理 shell 配置文件里的 conda 初始化代码
- 检查 ~/Library 下面的缓存和偏好设置文件
很多人只做前两步,导致后面终端报错或者系统里残留一堆隐藏文件。
3.2 为什么要用命令删而不是直接拖废纸篓
直接拖废纸篓的问题在于,Anaconda 安装目录里有大量文件被授权为只读或受 macOS 的 SIP 保护,即使你是管理员,有些子目录也不一定拖得动。更关键的是,直接删除不会处理 shell 配置文件和 LaunchAgent 之类的关联项。
我的做法是用命令行删除安装目录,给你一个稳妥的模板:
sudo rm -rf /opt/anaconda3
rm -rf 要慎用,但卸载 Anaconda 时这是最常用的手段。如果路径是用户目录下的 ~/anaconda3 ,可以不用 sudo :
rm -rf ~/anaconda3
删除之后可以用 ls -d /opt/anaconda3 或者 ls -d ~/anaconda3 确认目录确实不存在了。
3.3 强杀进程和包管理残留
如果你当前还有 conda 环境正在运行,比如 Jupyter Notebook、Python 进程还在跑,直接删目录会报错或者留下锁文件。建议先退出相关进程:
conda deactivate conda env list
如果有 Jupyter 或 Python 相关的进程占用,可以用:
pkill -f jupyter pkill -f python
然后再进行删除。杀进程这步不是必须,但能避免一些文件被占用导致的删除不干净。我实际遇到过删除过程中提示 Text file busy ,就是因为有进程还在引用包里的启动脚本。
4. shell 配置文件清理:最容易忽略的重灾区
4.1 conda init 在 .zshrc 里加了什么
Anaconda 安装时会在 shell 配置文件里追加一段初始化代码。以 zsh 为例, ~/.zshrc 里可能会多出这么一块:
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/opt/anaconda3/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/opt/anaconda3/etc/profile.d/conda.sh" ]; then
. "/opt/anaconda3/etc/profile.d/conda.sh"
else
export PATH="/opt/anaconda3/bin:$PATH"
fi
fi
unset __conda_setup
# <<< conda initialize <<<这段代码的功能是每次打开终端时自动加载 conda 命令。如果 Anaconda 目录都删了,这段代码还留在配置文件里,终端每次打开都会尝试去 /opt/anaconda3/bin/conda 找命令,找不到可能不会报错,但会拖慢 shell 启动速度,而且相当于每次进入终端都做一次无意义的文件存在性检查。我在实际使用中看到的情况是,有些人的 .zshrc 里还残留着老旧版本的 Anaconda 路径,导致 conda 命令明明没装却在报 command not found 。
清理方法很简单,打开文件手动删掉这段即可:
vim ~/.zshrc
或者你想可视化一点:
open -e ~/.zshrc
4.2 同时检查 .bash_profile 和 .bashrc
如果你的 shell 是 bash,检查 ~/.bash_profile 和 ~/.bashrc 。Anaconda 安装器有时会在两个文件里都写入初始化代码。特别是你以前升级过 macOS 版本,或者切换过默认 shell,很容易出现多个配置文件里都有残留的情况。
我自己遇到过的一台机器就是: .zshrc 里没有 conda 代码,但 ~/.profile 里有,因为当年装 Anaconda 的时候默认 shell 是 bash,后来用户手动切换成了 zsh。每次打开终端虽然不报错,但你能明显感受到 shell 启动变慢了。所以清理的时候别只盯着当前 shell 的配置文件, ~/.profile 、 ~/.bashrc 、 ~/.bash_profile 都扫一眼最稳妥。
注意:改配置文件前最好先备份。我一般是直接执行 cp ~/.zshrc ~/.zshrc.bak ,改完不放心还能恢复。
4.3 让修改立即生效
清理完配置文件后,你需要让 shell 重新加载配置:
source ~/.zshrc
如果是 bash:
source ~/.bash_profile
然后输入 conda ,正常情况会提示 command not found ,这就说明已经彻底解绑了。
5. 用户目录和 Library 残留清理细节
5.1 逐个清理隐藏配置目录
Anaconda 会在用户主目录下生成一堆隐藏目录,常见的有:
- ~/.conda :conda 的缓存、环境打包信息等
- ~/.condarc :conda 配置文件
- ~/.ipython :IPython 的历史记录、配置
- ~/.jupyter :Jupyter Notebook 的配置和运行时文件
- ~/.matplotlib :matplotlib 的字体缓存和配置
- ~/.spyder :如果装了 Spyder,会有这个目录
- ~/.astropy :如果用过 astropy 会有
- ~/.cache/pip :pip 的缓存(如果 conda 环境里用过 pip)
用一个命令可以批量查看这些目录存在哪些:
ls -la ~ | grep -E 'conda|ipython|jupyter|matplotlib|spyder'
发现了就删,删除命令举例:
rm -rf ~/.conda ~/.condarc ~/.ipython ~/.jupyter ~/.matplotlib ~/.spyder
注意, ~/.cache/pip 这个目录可能不是 Anaconda 专属的,如果你还用了系统自带的 Python 或者其他工具,这个目录里可能有其他缓存。建议只清理 conda 相关的部分,不要盲目把整个 ~/.cache/pip 删掉。如果你想处理完再看效果,可以先把它改名为 pip.bak 放几天,确认没问题再删。
5.2 处理 ~/Library 下的插件和偏好设置
macOS 的 ~/Library 目录是各种应用程序的偏好设置、缓存、Application Support 的大本营。Anaconda 相关的东西分布在几个常见位置:
- ~/Library/Application Support/Anaconda :Navigator 等组件的数据
- ~/Library/Application Support/conda :conda 的全局数据
- ~/Library/Caches/com.anaconda.Anaconda-Navigator :导航器缓存
- ~/Library/Preferences/com.anaconda.Anaconda-Navigator.plist :偏好设置
- ~/Library/Logs/Anaconda :日志文件
- ~/Library/Cookies/com.anaconda.Anaconda-Navigator.binarycookies :浏览器相关的 Cookie 数据
可以用这串命令检查:
ls -d ~/Library/Application\ Support/Anaconda ~/Library/Application\ Support/conda ~/Library/Caches/com.anaconda.Anaconda-Navigator ~/Library/Preferences/com.anaconda.Anaconda-Navigator.plist ~/Library/Logs/Anaconda 2>/dev/null
确认存在后删除,例如:
rm -rf ~/Library/Application\ Support/Anaconda rm -rf ~/Library/Application\ Support/conda rm -rf ~/Library/Caches/com.anaconda.Anaconda-Navigator rm -rf ~/Library/Preferences/com.anaconda.Anaconda-Navigator.plist rm -rf ~/Library/Logs/Anaconda
这几个文件如果不删,虽然日常使用感知不强,但这些数据可能在新安装 Anaconda 时被读取,导致新环境的设置继承了旧版本的 bug 或者自定义配置。我有一次重装后 Jupyter 一直找不到 conda 环境,就是 ~/Library/Application Support/conda 里的元数据在捣乱,清理干净后就好了。
5.3 删除 /Applications 里的图形界面应用
如果你用的是图形界面安装包, /Applications 下会有一个 Anaconda-Navigator.app 。这个应用不删的话,Launchpad 里还会有一个顽固的图标,点开后又提示找不到 conda。直接删除:
rm -rf /Applications/Anaconda-Navigator.app
如果你在 ~/Applications 下也装了其他关联应用,比如 PyCharm 的 conda 插件配置之类,可以顺手检查:
ls -d ~/Applications/Anaconda-Navigator.app 2>/dev/null
5.4 查看 LaunchAgent 和 LaunchDaemon
Anaconda 不太会默认安装开机启动的 LaunchAgent,但如果你装过一些扩展组件(比如 conda-forge 的某些包或 MKL 相关服务),可能在 ~/Library/LaunchAgents 里有残留。检查方式:
ls -la ~/Library/LaunchAgents/ | grep -i anaconda
正常情况下不会发现什么。如果发现了相关 plist 文件,手动移除即可。这一步属于高阶检查,绝大多数用户不需要处理,但我还是写出来,因为“彻底干净”就靠这种角落里的细节。
6. PATH 环境变量检查与收尾
6.1 为什么删完之后 PATH 还是很乱
Anaconda 安装时会在 PATH 最前面 插入它的 bin 目录,所以 python 命令默认指向的是 Anaconda 的 Python。卸载后,如果你的 shell 配置里还有 export PATH="/opt/anaconda3/bin:$PATH" 这一行,即便 Anaconda 目录删了,终端启动时 PATH 里也会包含一个不存在的路径。
用这条命令检查当前 PATH:
echo $PATH | tr ':' '\n' | grep -i conda
如果有输出,说明配置没清理干净,回到第四步再检查一遍配置文件。
正常的卸载完成后, python3 应该指向系统自带的 Python 或者 Homebrew 的 Python。输入:
which python3
确认路径不是你 Anaconda 的目录。如果你希望 python 和 python3 都指向 /usr/bin/python3 ,可以在 .zshrc 里做别名设置,但这已经是另一个话题了。
6.2 检查 conda 命令是否彻底失效
收尾时最直接的验证就是打开一个新终端窗口,输入 conda ,看是否提示 command not found 。这里注意,如果你开了多个终端窗口或者用了 tmux,旧的终端可能还保留了 Anaconda 的环境变量,这是正常的,重新开一个终端就好了。
如果新终端还是能调用 conda,有几种可能:
- shell 配置文件中还有残留代码
- 系统 PATH 里还有其他位置放了一个 conda 命令,比如 /usr/local/bin/conda
- shell 缓存了命令路径,需要执行 hash -r 刷新
排查方式:
which conda type -a conda
如果找到其他路径下有 conda,检查是否真的是 Anaconda 的一部分,再用 ls -l 查看真实路径。
6.3 回收磁盘空间的确认
Anaconda3 完整安装体积通常有好几 GB,加上各环境缓存,可能占用 5GB 以上。卸载后想确认磁盘空间是否真的释放了,可以用“关于本机 - 存储空间”查看,或者命令行:
df -h /
对比卸载前后的可用空间,干净卸载的情况下差异应该非常明显。如果你发现空间没怎么变,说明安装目录没删干净,重新检查 /opt/anaconda3 、 ~/anaconda3 这些位置。
7. 常见问题与排查技巧实录
7.1 终端每次打开提示 conda: command not found
这个问题的原因几乎都是 shell 配置文件里的初始化代码没有清理干净。执行 open -e ~/.zshrc (或 ~/.bash_profile ),把 conda initialize 相关段落整块删掉,再执行 source ~/.zshrc 就好了。
如果删完还提示,检查是不是启用了多个配置文件。macOS 下 zsh 可能会同时读取 .zshenv 、 .zprofile 、 .zshrc 、 .zlogin ,Anaconda 的安装器大多只写 .zshrc ,但有些第三方的管理工具可能写入 .zshenv 。稳妥起见全部检查一遍:
for f in ~/.zshenv ~/.zprofile ~/.zshrc ~/.zlogin; do echo "--- $f ---"; grep -n conda "$f" 2>/dev/null; done
7.2 提示文件被占用或 Text file busy
这种报错一般是因为有进程还在跑。执行 pkill -f conda 、 pkill -f jupyter 、 pkill -f python ,或者干脆重启电脑后再删除安装目录。我偏向于先杀进程再删,如果杀完还搞不定,就重启,重启后任何占用都会释放。
7.3 anaconda-clean 生成了一大堆 .bak 文件
anaconda-clean 默认会创建 ~/.anaconda_backup/ 目录,里面全是原配置的备份。如果确认不需要了,直接删掉这个备份目录:
rm -rf ~/.anaconda_backup
7.4 卸载之后 Homebrew 报错或者编译工具找不到 Python
这种情况多发生在你曾经用 /opt/anaconda3/bin/python 作为全局 Python 解释器,系统里某些自己安装的工具硬编码了那个路径。解决思路是:
- 检查是否有软链接指向 /opt/anaconda3
- 重新安装或者重链相关工具
- 如果之前用 Homebrew 安装过 Python 工具,执行 brew link python@3.x --force 重新建立链接
我能想到的最典型的场景是 pylint 、 jupyter 这类用 pip 装到 conda 环境的命令,卸载后终端找不到,需要重新用 Homebrew 或 pipx 安装到系统 Python 环境里。
7.5 重装 Anaconda 之后没有图标
如果你卸载后还要重装,装完发现 Launchpad 里没有 Anaconda-Navigator 图标,多半是前一次删除时 /Applications/Anaconda-Navigator.app 没有被完全清掉,或者系统缓存了图标索引。执行:
killall Dock
8. 我个人踩过坑后的一点建议
这次卸载我最大的体会是:Anaconda 安装起来很容易,但卸载绝不是拖进废纸篓那么简单。它牵扯到 shell 初始化、PATH、用户目录隐藏文件、Library 偏好设置几个层面,任何一个环节遗漏,都会在后续使用中冒出来恶心你一下。
如果你是因为 Anaconda 太臃肿才卸载,我的建议是以后可以考虑用 Miniconda 替代。Miniconda 只装了 conda 和最小依赖,需要什么包再用 conda install 装,体积比 Anaconda 小一大截,环境管理能力毫不缩水。而且 Miniconda 的卸载流程和 Anaconda 完全一样,你按这篇流程走一遍,同样能收拾干净。
另外一个建议是,卸载前可以顺手建一个虚拟环境记录,把自己常用包的安装命令整理到一个文本里。这样以后无论是用 conda、Homebrew 还是系统 Python,都能快速重建环境,减少重新摸索的成本。毕竟卸载只是手段,让你接下来的开发环境更顺心才是目的。
以上就是Mac中彻底干净卸载Anaconda的完整清理指南的详细内容,更多关于mac彻底卸载Anaconda的资料请关注脚本之家其它相关文章!
相关文章
解决pycharm每次新建项目都要重新安装一些第三方库的问题
今天小编就为大家分享一篇解决pycharm每次新建项目都要重新安装一些第三方库的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2019-01-01
浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack
这篇文章主要介绍了浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-06-06
在Python中使用defaultdict初始化字典以及应用方法
今天小编就为大家分享一篇在Python中使用defaultdict初始化字典以及应用方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2018-10-10


最新评论