PyCharm中如何在项目代码变更时自动重启Jupyter服务?
PyCharm中Jupyter自动加载外部Python文件修改的实现方法
优先推荐:无需重启内核的自动重载方案
这是体验最流畅的方案,完全不需要等待内核重启,修改完外部py文件后直接运行Notebook单元格即可加载最新代码,不需要任何重启操作。
在Notebook的首个单元格添加如下IPython魔法命令,运行一次即可生效:
# 加载自动重载扩展 %load_ext autoreload # 配置重载规则:2表示自动重载所有导入的自定义模块的所有改动 %autoreload 2
如果担心全量重载影响第三方库稳定性,可以换用指定模块重载模式:
%load_ext autoreload # 1表示仅重载显式标记的模块 %autoreload 1 # 标记需要自动重载的项目内模块,替换成你自己的模块名即可 %aimport my_project_utils
如果不想每次新建Notebook都手动输入这几行,可以配置IPython全局启动规则:在对应虚拟环境的IPython配置目录下新建profile_default/ipython_config.py文件,写入以下配置,后续所有启动的IPython/Jupyter内核都会默认开启自动重载:
c.InteractiveShellApp.extensions = ['autoreload'] c.InteractiveShellApp.exec_lines = ['%autoreload 2']
自动重启内核的配置方案
如果遇到autoreload无法覆盖的特殊场景(比如修改了模块级装饰器、动态类元数据等),可以配置PyCharm在内核依赖的源文件变更时自动重启:
- 打开PyCharm设置面板,进入
Build, Execution, Deployment > Jupyter配置页 - 勾选Restart kernel on source file changes选项,保存配置即可生效
- 之后只要你修改了Notebook导入的项目内Python文件,PyCharm会自动触发对应Jupyter内核的重启操作,不需要手动点击重启按钮
如果使用的是PyCharm社区版,没有上述内置配置项,可以通过在Notebook开头添加文件监听脚本的方式实现,不过这种方式稳定性不如内置配置,优先推荐使用前面的autoreload方案。
内容的提问来源于stack exchange,提问作者Dan Rozenfarb
相关产品推荐
相关产品推荐

