如何让Jupyter notebook服务器在运行笔记本代码前执行自定义Python代码
Jupyter 预执行初始化代码实现方案
你可以通过以下两种主流方案实现需求,其中自定义内核的方案和Odoo.sh的实现逻辑完全一致:
方案一:自定义Jupyter Python内核(推荐)
该方案可以和默认Python内核共存,需要使用预加载功能时切换对应内核即可,不会影响其他项目的运行环境:
- 首先执行命令
jupyter kernelspec list,查看当前环境已安装的内核,复制你要修改的Python 3内核对应的本地路径 - 进入对应内核目录,新建
init_script.py文件,写入你需要预执行的代码:
example_value = False def example_func(): global example_value example_value = True example_func()
- 打开目录下的
kernel.json文件,修改argv参数,将初始化脚本的执行逻辑加到内核启动流程中:
{ "argv": [ "python", "-c", "exec(open('/你自己的路径/init_script.py').read()); from ipykernel import kernelapp as app; app.main()", "-f", "{connection_file}" ], "display_name": "Python 3 (Odoo预加载)", "language": "python" }
- 保存文件后重启Jupyter,创建笔记本时选择名为
Python 3 (Odoo预加载)的内核,所有单元格运行前都会自动执行你写的初始化代码,直接在单元格运行example_value即可得到输出True。
方案二:IPython配置全局预加载
该方案会对所有使用当前IPython配置的内核生效,适合全环境都需要统一预加载逻辑的场景:
- 执行命令
ipython profile create生成默认IPython配置文件 - 打开生成的配置文件
~/.ipython/profile_default/ipython_config.py(Windows路径为%USERPROFILE%\.ipython\profile_default\ipython_config.py) - 找到
c.InteractiveShellApp.exec_files配置项,取消注释后填入你的初始化脚本路径:
c.InteractiveShellApp.exec_files = ['/你自己的路径/init_script.py']
- 保存文件后重启Jupyter即可生效。
内容的提问来源于stack exchange,提问作者Aaron Beaudoin
相关产品推荐
相关产品推荐

