Jython 动态导入或重新加载

ted*_*ted 4 python jython

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

我用谷歌搜索并找到了一篇文章,指出应该导入或重新加载子模块。因此,基本轮廓是:

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) 
Run Code Online (Sandbox Code Playgroud)

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

两个问题:

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

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

Jon*_*nas 5

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

import sys
sys.modules.clear()
Run Code Online (Sandbox Code Playgroud)