告别残留:多环境视角下彻底卸载Jupyter Notebook的完整指南

张开发
2026/4/18 17:09:10 15 分钟阅读

分享文章

告别残留:多环境视角下彻底卸载Jupyter Notebook的完整指南
1. 为什么Jupyter Notebook总是卸载不干净每次用pip uninstall jupyter后发现命令行输入jupyter notebook还能运行这不是你的错觉。我遇到过最夸张的情况是系统里同时存在5个不同版本的Jupyter它们分别来自用Python 3.7的pip安装的用Python 3.9的pip安装的通过conda环境安装的系统apt仓库自带的snap商店安装的版本这种多环境混用的情况就像在房间里同时开了5个电视频道每个频道都在播放不同的节目。当你关闭其中一个比如pip卸载其他四个还在继续运行。这就是为什么会出现The jupyter distribution was not found的报错——你只关闭了一个频道但系统检测到其他频道还在播放。2. 环境诊断找出所有隐藏的Jupyter2.1 使用which -a进行全盘扫描先来个全局搜索which -a jupyter这个命令会列出所有可执行文件的安装路径比如可能返回/home/user/.local/bin/jupyter /usr/local/bin/jupyter /opt/anaconda3/bin/jupyter /usr/bin/jupyter我最近帮同事排查时发现他的机器上有三个jupyter核心文件Miniconda安装的Python 3.8环境系统Python 3.6环境通过snap安装的独立版本2.2 检查各环境的包管理器针对每个找到的jupyter路径需要确认其所属环境# 查看pip归属 which -a pip # 查看conda环境 conda env list # 检查snap安装 snap list | grep jupyter有个实用技巧如果jupyter路径在/snap/bin/下那一定是snap安装的。上周我遇到一个案例用户用snap安装了jupyter-core却用pip卸载主包导致依赖关系完全混乱。3. 多环境卸载实操指南3.1 pip环境的深度清理普通卸载根本不够# 错误示范可能残留20个依赖包 pip uninstall jupyter应该用核弹级清理# 先安装清理工具 pip install pip-autoremove # 执行彻底卸载实测可删除23个关联包 pip-autoremove jupyter -y如果还不行就手动补刀pip uninstall notebook jupyter_core jupyter_client \ jupyter_console qtconsole nbconvert nbformat \ ipykernel ipywidgets特别注意如果你在用Python 3记得把pip换成pip3。有次我帮学弟调试他死活卸载不成功最后发现一直在用Python 2的pip操作Python 3的环境。3.2 conda环境的特殊处理conda的依赖管理更复杂建议这样操作# 查看所有相关包 conda list | grep jupyter # 完整卸载conda会自动处理依赖 conda remove --force jupyter jupyter_core notebook有个坑要注意conda环境里混用pip安装的包会导致依赖地狱。去年我们团队就因此废掉一个数据分析环境。最佳实践是在conda环境里只用conda管理包。3.3 系统级安装的清理对于apt安装的版本# 查看已安装包 apt list --installed | grep jupyter # 彻底卸载 sudo apt purge jupyter-core jupyter-notebook如果是snap安装的snap remove jupyter4. 残留文件手动清理即使卸载完这些地方可能还有漏网之鱼~/.local/share/jupyter/~/.jupyter//etc/jupyter/各种__pycache__目录我习惯用这个命令大扫除find ~ -type d -name *jupyter* -exec rm -rf {} 危险操作警告执行前建议先备份。有次我不小心把同事的~/jupyter_workspace也删了还好有Git记录。5. 重装前的必要检查卸载干净后建议先# 检查是否真的没了 which jupyter jupyter --version确认完全清除后再重新安装# 先升级pip python -m pip install -U pip # 推荐用pipx隔离安装 pipx install jupyter如果是conda用户conda install -c conda-forge jupyter6. 避坑经验分享环境隔离我强烈建议用virtualenv或conda创建独立环境。上周用Docker测试时发现基础镜像里预装的jupyter居然和宿主机的冲突。安装源统一要么全用conda要么全用pip。见过最惨的案例是有人同时用pip、conda、apt和源码编译安装了四个版本的notebook。版本锁定在团队协作中建议用requirements.txt明确版本jupyter1.0.0 notebook6.4.8路径检查安装后执行which jupyter确认二进制文件来自预期的环境。有次我的zsh配置把/usr/local/bin路径提到了conda前面导致总是调用错误的版本。最后说个真实笑话去年我们组有个实习生为了卸载jupyter前后折腾了三天最后重装了系统。后来发现是他自己写的bash alias覆盖了jupyter命令。所以遇到灵异问题时记得检查shell配置和alias。

更多文章