jupyter notebook 不支持通过 jupyter_notebook_config.py 设置欢迎语,因 notebookapp 类未定义 welcome_message 参数;可行替代方案是将 readme.md 设为默认首页,即配置 c.notebookapp.default_url = '/tree/readme.md'。

Jupyter Notebook 的配置文件 jupyter_notebook_config.py 本身不支持设置「欢迎语」——它没有 c.NotebookApp.welcome_message 或类似参数,强行添加无效,也不会在启动页显示任何自定义文字。
为什么不能直接写 welcome_message?
因为 Jupyter Notebook(截至 v7.x)的后端服务逻辑中,NotebookApp 类未定义该配置项。官方文档和源码里都查不到对应字段,所有试图通过修改 jupyter_notebook_config.py 实现欢迎语的网上教程,基本都是混淆了 JupyterLab 插件、前端 hack 或旧版第三方扩展的行为。
常见错误现象包括:
- 在配置文件里写
c.NotebookApp.welcome_message = "Hello",重启后无任何效果 - 误以为
c.NotebookApp.custom_display_url或c.NotebookApp.default_url能控制首页文案,其实它们只影响跳转路径 - 把 JupyterLab 的
@jupyterlab/welcome插件行为套用到 Notebook 上,结果失败
真正可行的替代方案:改首页 HTML 模板(仅限本地部署)
如果你坚持要在 Notebook 启动页(/tree)顶部加一段文字,唯一稳定方式是覆盖默认模板。这需要手动修改 Jupyter 的前端模板文件,且每次升级可能被重置。
操作步骤如下:
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
- 运行
jupyter notebook --generate-config确保配置文件存在 - 执行
jupyter --paths查看data目录位置(通常为C:\Users\XXX\.jupyter\或~/.jupyter/) - 在该目录下新建文件夹:
custom,再进入创建custom.js - 往
custom.js里写入 DOM 注入脚本,例如:
$(document).ready(function() {
if (window.location.pathname === '/tree') {
$('#notebook_toolbar').before(
'<div style="padding:12px 20px; background:#f8f9fa; border-bottom:1px solid #e9ecef;">
<b>⚠️ 项目说明</b>:请使用 conda 环境 my_ml_env 运行本目录下的 notebook</div>'
);
}
});
注意:custom.js 会被 Jupyter 自动加载(前提是 c.NotebookApp.extra_static_path 或模板机制启用),但依赖 jQuery,且在新版 Notebook 中可能因前端重构失效。
更可靠的做法:用启动脚本 + Markdown 说明页
与其折腾不可靠的欢迎语,不如在工作目录根部放一个 README.md 文件,再设为默认打开页:
- 在
jupyter_notebook_config.py中设置:c.NotebookApp.default_url = '/tree/README.md' - 确保
README.md存在于你指定的c.NotebookApp.notebook_dir下 - Markdown 渲染后就是带格式的说明页,还能嵌入链接、代码块、图片,比纯文本欢迎语实用得多
这个方案不依赖前端 hack,不随 Jupyter 升级崩溃,也符合 notebook 作为「可执行文档」的设计哲学。
真正容易被忽略的是:所谓「欢迎语」需求,往往本质是「降低新用户上手门槛」或「提示当前环境约束」。直接改模板既脆弱又难维护,用 README.md + default_url 组合,才是稳、快、可版本控制的解法。










