1、背景
a.py中import了b.py,但是当在程序执行过程中,b.py的内容发生了变化
此时由于import只生效一次的局限,导致a.py中使用到了b.py中的方法和变量都是旧的
所以需要在使用新的b.py内容的地方对b.py进行重新加载
2、解决方法
使用python的reload()方法
py2中reload是内置方法,直接使用
py3中需要from imp import reload进行使用
没有重新加载b的情况:
import b def sayOld(): print b.name def changeB(): xxx # b文件被读写了,内容发生了变化 def sayNew(): print b.name sayOld() satNew() >>> old old
重新加载了b的情况:
import b import os,sys os.sys.append(os.path,dirname(__file__)) # 避免在被引用后找不到模块,我们将模块路径加入到pythonpath中 def sayOld(): print b.name def changeB(): xxx # b文件被读写了,内容发生了变化 def sayNew(): reload(b) print b.name sayOld() satNew() >>> old new