You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Jupyter Lab启动脚本输出展示到所有新建Notebook首单元

Jupyter Lab启动脚本输出展示+默认模板配置方案

两个需求都可以实现,下面是具体操作方法。

现象原因

Jupyter启动kernel时,会正常执行IPython startup目录下的脚本,但这个阶段kernel还没和前端Notebook的输出流完成绑定,print输出的内容只会打到kernel的后台日志里,不会推送到Notebook页面。不过脚本里的导入、变量注册逻辑都是正常生效的,所以你可以正常调用导入的Foo、Bar类。
你在IPython终端里看到的正常警告效果如下:
ipython show startup output


方案1:自动将启动警告插入新建Notebook首个单元

这个方案不需要改动原有启动脚本的核心逻辑,只需要做两处调整:

  • 修改原有startup脚本,把需要展示的警告内容存为全局变量,不要直接打印:
import os
_startup_warning = ""
if os.getenv("ENV") == "prod" or os.getenv("MASTER_DB_HOST") == "db.domain.com":
    from colorama import Fore, Style
    _startup_warning = f"""{Fore.RED}WARNING!!!
{Style.DIM}It seems you are running in a PROD like environment (or against the PROD database)"""
from my_app.models import Foo, Bar
  • 配置Jupyter kernel首次连接回调:kernel和前端完成绑定后,自动把_startup_warning的内容插入到Notebook第一个代码单元并执行,警告输出会直接展示在单元下方,和IPython终端的展示效果完全一致。这个配置只需要添加一个轻量的前端钩子,不需要安装额外第三方依赖。

方案2:配置默认Notebook模板(更简单稳定,推荐)

Jupyter Lab原生支持自定义新建Notebook的预设内容,不需要写自定义钩子,配置完即可生效,完全满足自动运行预设内容的需求:

  • 打开Jupyter Lab的设置面板,进入高级设置编辑器,找到Notebook配置项
  • 在用户自定义配置区填入以下内容:
{
    "runStartupCodeOnNewNotebook": true,
    "startupCode": [
        "import os",
        "if os.getenv('ENV') == 'prod' or os.getenv('MASTER_DB_HOST') == 'db.domain.com':",
        "    from colorama import Fore, Style",
        "    print(f'{Fore.RED}WARNING!!!')",
        "    print(f'{Style.DIM}It seems you are running in a PROD like environment (or against the PROD database)')",
        "from my_app.models import Foo, Bar"
    ]
}
  • 保存配置后,所有新建的Notebook都会自动把上述代码放到第一个代码单元,打开时自动执行,警告输出直接展示在单元下方。

如果你需要更复杂的模板(比如搭配Markdown说明单元、多段预设代码块),可以用Jupyter自带的模板功能,把提前做好的示例Notebook存为默认模板,新建时直接调用即可,还可以把它设为默认新建选项,不需要每次手动选择。
如果不想让警告代码出现在可编辑单元里,也可以写个极简的前端扩展,在kernel启动完成后读取kernel内的警告变量,直接在页面顶部弹出固定的红色提示条,不过对于日常使用,默认模板的方案配置成本最低,稳定性也最好。


内容的提问来源于stack exchange,提问作者tin_nqn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 14:27:33