我正在编写一个程序来管理处理数据流。用户可以编写几种方法的代码来处理数据,称为“流程代码”,并告诉我的程序比较每种方法的结果。代码由exec
执行。
还有一个git repo包含要调用的函数,用户可以在'flow code'中导入它们。
我的问题是,因为用户可以在每次执行之间更改repo,如何告诉python在'flow code'中看到import语句时重新加载模块?我目前的解决方案是,在执行一行之前,检查'流程代码'的所有局部变量的类型,如果类型为ModuleType
则重新加载它。但是,这是非常低效的。有没有更好的解决方案,比如钩子?
有人说imputil
可以制作钩子,但文档说:
从2.6版开始不推荐使用:已在Python 3中删除了imputil模块。
我正在使用python 2.7
答案 0 :(得分:0)
使用重新加载方法。
e.g。
>>> import test
>>> test.a
1
>>> test.a = 3
>>> test.a
3
>>> reload(test)
<module 'test' from 'test.pyc'>
>>> test.a
1
>>>