这里是我的代码重新加载使用重载一个Python模块()建立功能。我已经看了一些(不是所有:))其他的问题和答案在计算器,但把我的代码工作,我仍然需要做一个os.remove(“m.pyc”)。任何人都可以向我解释或告诉我如何改变我的代码,使下面的工作没有删除。另一个Python模块重装问题
import os
open('m.py','wt').write(r'def f(str): print "Sooo Original : %s"%(str)')
import m
m.f('Original')
os.remove('m.pyc')
open('m.py','wt').write(r'def f(str): print "Not so original : %s"%(str)')
m = reload(m)
m.f('Copy')
是的,你说的确实有效,但它对我来说很奇怪,为什么python在我们要求导入它时没有再真正导入模块。 –
pyc是一个未连接到重装机制的缓存机制。如果Python没有检测到需要重建它的缓存,那么导入和重新加载仍然会使用相同的旧pyc似乎很正常。你需要的是一种使pyc缓存无效的方法(这是你在删除pyc文件时所做的)。 – JMD
据我所知,它通过时间戳去,所以另一种策略是改变m.pyc的时间戳(一个过去的日期),而不是等待或干脆删除文件。 –