OpenERP python代码开发周期是编辑你的代码,重启服务器并测试它。重新启动服务器是必要的,因为它会使您的源代码重新加载到内存中,但它会增加您工作节奏的恼人延迟。
由于 python 是一种动态语言,我想知道是否有一种方法可以强制正在运行的 python 解释器(应用程序服务器)动态重新加载代码模块,以便可以在不重新启动应用程序服务器的情况下对其进行测试?
更新:
按照reload
@ecatmur 建议的路径,我得到了下面的代码,但它仍然不起作用:
class module(osv.osv):
_inherit = "ir.module.module"
def action_reload(self, cr, uid, ids, context=None):
for obj in self.browse(cr, uid, ids, context=context):
modulename = 'openerp.addons.' + obj.name
tmp = __import__(modulename)
pycfile = tmp.__file__
modulepath = string.replace(pycfile, ".pyc", ".py")
code=open(modulepath, 'rU').read()
compile(code, modulename, "exec")
execfile(modulepath)
reload( sys.modules[modulename] )
openerp.modules.registry.RegistryManager.delete(cr.dbname)
openerp.modules.registry.RegistryManager.new(cr.dbname)