必须替换 notebook/static/base/images/logo.png 文件才能修改 jupyter notebook 启动页 logo,因该图标硬编码在前端 bundle 中,css 无法覆盖;需定位包安装路径、备份原文件、使用 128×128 或 256×256 透明 png,并清除浏览器缓存。

修改 jupyter-notebook 启动页 Logo 需要替换静态资源文件
不能通过 custom.css 或 jupyterthemes 修改启动页(即 /tree 页面顶部左上角的 Jupyter Logo),因为这个图标是硬编码在前端 bundle 里的静态资源,CSS 无法覆盖它。必须定位并替换实际的图片文件。
找到并替换 logo.png 文件位置
路径取决于你的 Python 环境和安装方式(pip/conda),但通用查找逻辑是:先定位 jupyter_server 或 notebook 包安装目录,再进入 static 子目录。
- 运行
python -c "import notebook; print(notebook.__file__)",得到类似.../site-packages/notebook/__init__.py的输出,去掉末尾/__init__.py,加上/static/base/images/logo.png - 常见路径示例(Windows):
C:\Users\USERNAME\Anaconda3\Lib\site-packages\notebook\static\base\images\logo.png - conda 环境下可能在:
envs/YOUR_ENV_NAME\Lib\site-packages\notebook\static\base\images\logo.png - 替换前务必备份原
logo.png,否则升级 notebook 后会被覆盖 - 新图片建议尺寸为
128×128px或256×256px,PNG 格式,透明背景更稳妥
重启服务后仍不生效?检查缓存与权限
浏览器会强缓存该 logo,且 notebook 服务启动时可能读取的是已编译的前端资源(如 build/ 目录下的打包文件),导致直接替换 logo.png 无效。
- 强制刷新页面:按
Ctrl+Shift+R(Windows/Linux)或Cmd+Shift+R(macOS) - 清空浏览器缓存,或尝试无痕窗口访问
http://localhost:8888/tree - 确认你修改的是当前正在使用的 notebook 版本对应路径——不同版本(如 6.x vs 7.x)的静态资源结构略有差异
- 如果用的是 JupyterLab(非 classic notebook),Logo 位置和路径完全不同:
lab/static/logo.svg,且默认是 SVG - Windows 下若提示“拒绝访问”,说明文件被占用或权限不足,需以管理员身份运行编辑器或命令行
更可靠但略重的方法:重写前端模板(仅限高级用户)
如果你需要彻底解耦、避免每次升级都被覆盖,可覆盖 notebook 的前端模板,但这要求你了解 webpack 构建流程,且维护成本高。
- 复制
notebook/templates/tree.html到~/.jupyter/custom/tree.html(需手动创建目录结构) - 在该文件中修改
<img src="<%=%20static_url(" base>">行,改为指向你自己的 CDN 或本地路径 - 注意:此方法在 notebook 7+ 中已被弃用,仅适用于 6.x 系列;新版推荐使用
jupyter-server插件机制扩展 UI
真正稳定的方式其实是放弃修改 Logo —— 它不是设计给用户定制的入口,而是项目标识。如果只是想个性化体验,jupyterthemes 调整主题色、字体、布局已经足够,且不会因版本更新失效。











