【发布时间】:2014-12-02 11:56:51
【问题描述】:
对于我的硕士论文,我试图利用 Python 作为脚本语言的特性,以便允许在运行时更改源代码。源代码本身使用特殊的用户界面建模并在保存时生成。启动时,生成的代码被发送到引擎并导入。这个过程可以正常工作,直到源代码发生更改,而无需在两次运行之间重新启动引擎(但重新启动不是选项)。
问题在于,即使文件已更改,引擎仍保留对旧源代码的引用。
我花了很长时间寻找解决方案,发现 reload() 作为一种选择 (ref)。不幸的是,由于某种原因,这不起作用。以下是相关部分的当前版本(每次收到源代码更改时执行):
package = __import__("tmp", fromlist=["tmp"])
reload(package) # this seems to have no effect
clsmembers = inspect.getmembers(package, lambda member: inspect.isclass(member) and member.__module__ == package.__name__)
beclass = clsmembers[0][1]
be = beclass()
我正在使用 Python 2.7(我必须这样做,我知道以后的 Python 版本会为这个特性提供更好的支持)。不一定非要reload(),我只需要任何方式重新导入代码更改即可。
感谢任何帮助! :)
【问题讨论】: