如何在Python中正确重载模块?我的尝试代码未生效
关于Python重载模块未生效的问题分析与解决
你尝试重载pandas模块后,发现之前修改的display.width配置依然保留,这是因为importlib.reload()仅会重新加载模块的代码,但不会重置模块已有的全局状态(比如pandas的配置选项)。pandas的配置存储在模块内部的全局对象中,重载操作不会清空这些已修改的配置值。
你的测试代码如下:
import pandas as pd pd.get_option('display.width') # 80 pd.set_option("display.width", 150) del pd import importlib import sys pd = importlib.reload(sys.modules['pandas']) pd.get_option('display.width') # 150
解决方法
- 直接重置配置(推荐)
不需要重载模块,用pandas内置的重置方法就能恢复默认配置:
import pandas as pd pd.get_option('display.width') # 初始值80 pd.set_option("display.width", 150) # 重置单个配置项到默认值 pd.reset_option('display.width') pd.get_option('display.width') # 回到80 # 或者重置所有配置项 pd.reset_option('all')
- 彻底移除模块缓存后重新导入
如果必须通过重新导入模块来恢复初始状态,需要先删除sys.modules中的模块缓存,再重新导入:
import sys # 移除pandas的模块缓存 if 'pandas' in sys.modules: del sys.modules['pandas'] # 重新导入模块 import pandas as pd pd.get_option('display.width') # 回到默认80
内容的提问来源于stack exchange,提问作者Shayan
相关产品推荐
相关产品推荐

