为什么PyCharm的autoreload不生效?导入.ipynb的外部函数更新未加载
PyCharm Jupyter Notebook 外部模块修改不生效排查方案
以下是按优先级排列的排查步骤:
- 确认自动重载魔法命令配置正确且已执行
需要在ipynb文件的第一个代码单元格中写入以下代码,且优先运行该单元格后再执行任何导入操作:
禁止将该配置放在导入语句之后,也不可跳过运行该单元格直接执行导入代码,否则配置不会生效。%load_ext autoreload %autoreload 2 - 检查PyCharm文件同步与工作目录配置
- 确认修改后的.py文件已保存:打开
设置-外观与行为-系统设置,确认如果IDE处于空闲状态X秒则保存文件选项已开启,也可手动按下Ctrl+S(Mac端为Command+S)保存文件后再重新运行ipynb代码 - 确认ipynb运行工作目录与.py文件所在目录匹配:在ipynb中运行如下代码查看当前工作路径,若与.py文件路径不符,可调整工作目录或使用绝对路径导入模块
import os print(os.getcwd())
- 确认修改后的.py文件已保存:打开
- 清除缓存并验证导入模块来源
- 删除.py文件所在目录下的
__pycache__文件夹,重启Jupyter内核后重新运行代码 - 导入模块后打印模块路径,确认导入的模块就是你修改的目标文件:
若打印路径和你修改的文件路径不一致,说明你导入的是其他位置的同名模块,需要调整Python路径或删除多余的同名模块文件。import 你的模块名 print(你的模块名.__file__)
- 删除.py文件所在目录下的
- 手动重载模块
若自动重载始终不生效,每次修改.py文件后可在ipynb中运行手动重载代码:import importlib import 你的模块名 importlib.reload(你的模块名) from 你的模块名 import 你的函数名
内容的提问来源于stack exchange,提问作者Kroshtan
相关产品推荐
相关产品推荐

