如何更新后重新加载Sage中的导入?当前需重启会话才生效
Sage中重新加载更新后模块的解决方案
当你修改MyClass.py后,Sage(本质基于Python环境)会缓存已导入的模块,所以直接load不会加载新版本,以下是几种可行的解决方法:
方法1:用importlib.reload()强制重载
由于你使用from MyClass import MyClass的导入方式,需要先重载整个模块再重新导入类:
import importlib import MyClass # 确保模块在当前命名空间中 importlib.reload(MyClass) from MyClass import MyClass # 重新导入更新后的类
执行上述代码后,再实例化类就能使用修改后的版本。
方法2:调整导入逻辑,每次运行自动重载
修改MyPrg.sage的导入代码,改为直接导入模块并每次重载:
import importlib import MyClass # 每次运行前重载模块 importlib.reload(MyClass) # 通过模块访问并实例化类 my_obj = MyClass.MyClass() my_obj.your_method() # 调用类方法
这样每次执行load("MyPrg.sage")时,都会自动重载模块,加载最新的类定义。
注意事项
- 重载模块后,之前创建的类实例还是基于旧版本的定义,需要重新创建新实例才能使用更新后的功能。
- 如果你使用的是IPython风格的Sage控制台,也可以尝试
%reload_ext MyClass魔术命令,但对普通Python模块,importlib.reload()的兼容性更好。
内容的提问来源于stack exchange,提问作者user93353
相关产品推荐
相关产品推荐

