Jython动态导入或重新加载

时间:2012-05-10 10:15:57

标签: python jython

我必须在Jython中编写代码,用于CCPS(使用jython作为脚本编程接口的程序)。但是,如果我在编辑器中更改子模块,Jython不会更新子模块,除非我重新启动程序(启动时间过长)。测试和调整相对较慢。

我用谷歌搜索并发现一个帖子表明,应该导入或重新加载子模块。因此基本概要是:

def loader(module, part=None):
    if not module in sys.modules :
        if part == None:
            exec("import "+module)
        else:
            exec("from %s import %s" % (module, part))                
    else :
        exec("reload "+module) 

但是我有一个问题,模块在本地加载,这意味着我可以访问loader()函数中的模块,但不能在我的主代码中访问。

两个问题:

在每个子模块更改后如何在不重新启动Jython的情况下在Jython中测试子模块的正确方法是什么? 有没有办法动态生成全局变量,所以我可以导入全局命名空间?

(例如exec("global %(mod)s = %(mod)s" % ({'mod':module}))

1 个答案:

答案 0 :(得分:4)

如何卸载所有模块,以便在下次导入时重新加载:

import sys
sys.modules.clear()