PyCharm中Jupyter脚本重启后运行报NameError无法识别ProgressBar类
报错产生的具体原因
1. Jupyter内核会话状态断层(最高概率)
- Jupyter脚本中使用的全局变量、导入的类/函数,仅存储在当前连接的运行内核内存中,不会永久写入
.ipynb脚本文件本身 - 上次因内存不足强制退出PyCharm时,原有承载脚本运行的内核被直接强制销毁;重启PyCharm打开同一脚本时,默认连接的是全新初始化的空内核
- 首次运行时能正常调用
ProgressBar,大概率是当时你在运行过程中临时在某个单元格执行过导入语句(如from tqdm import ProgressBar),但这行导入操作并没有被保存为脚本内的固定单元格代码。空内核启动后没有对应的导入记录,自然会抛出类未定义报错
2. 本地文件删除操作影响Python运行环境
- 如果
ProgressBar类来自存放在本地磁盘的自定义模块,或是依赖第三方包提供的实现,删文件时若误删模块存储目录、改动Python解释器的搜索路径配置,会导致之前能正常加载的类现在无法被导入识别 - 可在新单元格执行
import sys; print(sys.path)快速验证:查看之前存放ProgressBar实现文件的目录,是否仍在解释器的搜索路径列表中
3. PyCharm的Jupyter插件因崩溃出现配置异常
- 内存崩溃强制退出时,PyCharm的Jupyter插件临时缓存、单元格执行顺序映射配置可能损坏,出现单元格执行顺序错乱问题:比如脚本前段负责导入
ProgressBar的单元格没有被优先执行,后续调用该类的单元格先运行,就会触发未定义报错
快速排查方式:将脚本从第一个单元格开始,按顺序逐格手动执行,定位具体的导入失效环节
内容的提问来源于stack exchange,提问作者Frederique Voskeuil
相关产品推荐
相关产品推荐

