conda环境Jupyter Notebook调用MyUtils.py出现cv2未定义错误如何解决
问题原因
- 核心原因是Jupyter Notebook默认不会自动重载已经导入过的外部模块,你修改MyUtils.py添加
import cv2语句之前,该模块已经被导入过一次,后续运行时调用的是没有cv2导入逻辑的旧缓存版本,因此触发NameError。 - 次要排查点:你贴出的MyUtils.py代码中未实现报错里调用的
remove_noise函数,如果实际文件中也缺失该函数,需要补充对应实现。
解决方法
方法1:重启内核(最简单通用)
在Jupyter界面点击「Kernel」-「Restart & Run All」,重启后会重新加载最新版本的MyUtils.py文件,即可解决缓存问题。
方法2:开启自动重载(无需重启内核)
在导入MyUtils的单元格之前,先执行以下两行魔法命令:
%load_ext autoreload %autoreload 2
开启后Jupyter会自动检测外部py文件的修改并实时重载,后续修改MyUtils.py也不用再重启内核。
验证排查
如果上述操作后仍报错,可以执行以下代码确认导入的文件路径是否正确,避免加载了其他目录下的同名MyUtils.py文件:
import MyUtils print(MyUtils.__file__)
确认输出路径和你存放辅助函数的MyUtils.py路径一致即可。
内容的提问来源于stack exchange,提问作者Varazda
相关产品推荐
相关产品推荐

