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

Jupyter notebook导入本地Python文件修改后重新加载不生效问题

问题原因

你的推测完全正确,该问题是Python内置的模块缓存机制导致的:

  • Python解释器首次导入任意模块时,会把模块的完整内容加载到内存中缓存,后续所有import、from ... import ...语句都会直接复用内存中的缓存对象,不会重新读取磁盘上的最新源文件。
  • Jupyter notebook的内核是持续运行的Python进程,只要内核不重启,首次导入functions生成的缓存就会一直留存。你修改源文件后重新执行导入单元格,也不会更新缓存的模块内容,新增的composition函数自然不存在于缓存中,就会触发NameError。
  • 重启内核相当于销毁旧的Python进程、启动新进程,旧缓存全部清空,重新导入时就会读取最新的functions.py内容,所以代码可以正常运行。
无需重启内核的解决方法

方法1:手动重载模块

可以通过Python标准库importlib强制重载模块,修改完源文件后重新执行导入单元格即可生效:

import importlib
import functions
# 强制重载最新的模块内容
importlib.reload(functions)
from functions import *

方法2:开启Jupyter自动重载(推荐)

在notebook最开头添加两行IPython魔法命令,开启自动重载功能后,你修改源文件并保存后,运行代码会自动读取最新内容,无需手动重载也不用重启内核:

%load_ext autoreload
%autoreload 2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 12:15:03